Skip to content

Commit

Permalink
Store commit count in project table
Browse files Browse the repository at this point in the history
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
  • Loading branch information
dzaporozhets committed Jul 17, 2015
1 parent 67ca5a5 commit f0116f1
Show file tree
Hide file tree
Showing 11 changed files with 37 additions and 19 deletions.
14 changes: 14 additions & 0 deletions app/helpers/projects_helper.rb
Expand Up @@ -276,4 +276,18 @@ def last_push_event
def readme_cache_key
[@project.id, @project.commit.sha, "readme"].join('-')
end

def round_commit_count(project)
count = project.commit_count

if count > 10000
'10000+'
elsif count > 5000
'5000+'
elsif count > 1000
'1000+'
else
count
end
end
end
4 changes: 4 additions & 0 deletions app/models/project.rb
Expand Up @@ -683,6 +683,10 @@ def update_repository_size
update_attribute(:repository_size, repository.size)
end

def update_commit_count
update_attribute(:commit_count, repository.commit_count)
end

def forks_count
ForkedProjectLink.where(forked_from_project_id: self.id).count
end
Expand Down
12 changes: 0 additions & 12 deletions app/models/repository.rb
Expand Up @@ -94,18 +94,6 @@ def rm_tag(tag_name)
gitlab_shell.rm_tag(path_with_namespace, tag_name)
end

def round_commit_count
if commit_count > 10000
'10000+'
elsif commit_count > 5000
'5000+'
elsif commit_count > 1000
'1000+'
else
commit_count
end
end

def branch_names
cache.fetch(:branch_names) { raw_repository.branch_names }
end
Expand Down
1 change: 0 additions & 1 deletion app/services/git_push_service.rb
Expand Up @@ -21,7 +21,6 @@ def execute(project, user, oldrev, newrev, ref)

project.ensure_satellite_exists
project.repository.expire_cache
project.update_repository_size

if push_remove_branch?(ref, newrev)
@push_commits = []
Expand Down
2 changes: 1 addition & 1 deletion app/views/explore/projects/_project.html.haml
Expand Up @@ -14,7 +14,7 @@

.repo-info
- unless project.empty_repo?
= link_to pluralize(project.repository.round_commit_count, 'commit'), namespace_project_commits_path(project.namespace, project, project.default_branch)
= link_to pluralize(round_commit_count(project), 'commit'), namespace_project_commits_path(project.namespace, project, project.default_branch)
&middot;
= link_to pluralize(project.repository.branch_names.count, 'branch'), namespace_project_branches_path(project.namespace, project)
&middot;
Expand Down
2 changes: 1 addition & 1 deletion app/views/projects/show.html.haml
Expand Up @@ -13,7 +13,7 @@
%ul.nav.nav-pills
%li
= link_to namespace_project_commits_path(@project.namespace, @project, @ref || @repository.root_ref) do
= pluralize(number_with_delimiter(@repository.commit_count), 'commit')
= pluralize(number_with_delimiter(@project.commit_count), 'commit')
%li
= link_to namespace_project_branches_path(@project.namespace, @project) do
= pluralize(number_with_delimiter(@repository.branch_names.count), 'branch')
Expand Down
5 changes: 4 additions & 1 deletion app/workers/project_cache_worker.rb
Expand Up @@ -4,6 +4,9 @@ class ProjectCacheWorker
sidekiq_options queue: :default

def perform(project_id)
Project.find(project_id).repository.build_cache
project = Project.find(project_id)
project.update_repository_size
project.update_commit_count
project.repository.build_cache
end
end
2 changes: 1 addition & 1 deletion app/workers/repository_import_worker.rb
Expand Up @@ -28,7 +28,7 @@ def perform(project_id)
project.import_finish
project.save
project.satellite.create unless project.satellite.exists?
project.update_repository_size
ProjectCacheWorker.perform_async(project.id)
Gitlab::BitbucketImport::KeyDeleter.new(project).execute if project.import_type == 'bitbucket'
end
end
5 changes: 5 additions & 0 deletions db/migrate/20150717130904_add_commits_count_to_project.rb
@@ -0,0 +1,5 @@
class AddCommitsCountToProject < ActiveRecord::Migration
def change
add_column :projects, :commit_count, :integer, default: 0
end
end
3 changes: 2 additions & 1 deletion db/schema.rb
Expand Up @@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 20150713160110) do
ActiveRecord::Schema.define(version: 20150717130904) do

# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
Expand Down Expand Up @@ -374,6 +374,7 @@
t.integer "star_count", default: 0, null: false
t.string "import_type"
t.string "import_source"
t.integer "commit_count", default: 0
end

add_index "projects", ["created_at", "id"], name: "index_projects_on_created_at_and_id", using: :btree
Expand Down
6 changes: 5 additions & 1 deletion lib/repository_cache.rb
Expand Up @@ -20,6 +20,10 @@ def fetch(key, &block)
end

def exist?(key)
backend.exist?(key)
backend.exist?(cache_key(key))
end

def read(key)
backend.read(cache_key(key))
end
end

0 comments on commit f0116f1

Please sign in to comment.