diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 78f24dbd7efc6dc51a789a1834cfe1da7ed62198..f61baf00525b32b4170193a548ad5fe6d6718259 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -276,4 +276,18 @@ module ProjectsHelper 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 diff --git a/app/models/project.rb b/app/models/project.rb index b161cbe86b9972394522c9cca7353bf2ad978056..ff372ea9aa50cb180e1a865dce8200e52f63d596 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -683,6 +683,10 @@ class Project < ActiveRecord::Base 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 diff --git a/app/models/repository.rb b/app/models/repository.rb index bca14aa1a33a923d1e448deae50df3b7e7e66238..2985619fd2e5eecc77cb7e4b1ae8a24ca520bb09 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -94,18 +94,6 @@ class Repository 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 diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb index c36113329ea795833cc00ed1f99f440b2658a312..3511392d1d82b52833f89d6ef5998873a1408379 100644 --- a/app/services/git_push_service.rb +++ b/app/services/git_push_service.rb @@ -21,7 +21,6 @@ class GitPushService project.ensure_satellite_exists project.repository.expire_cache - project.update_repository_size if push_remove_branch?(ref, newrev) @push_commits = [] diff --git a/app/views/explore/projects/_project.html.haml b/app/views/explore/projects/_project.html.haml index d65fb529373131b7bae68e3f217644124380854b..d769c91545d0a9bc201b876bba295f9f82cd3ec5 100644 --- a/app/views/explore/projects/_project.html.haml +++ b/app/views/explore/projects/_project.html.haml @@ -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) · = link_to pluralize(project.repository.branch_names.count, 'branch'), namespace_project_branches_path(project.namespace, project) · diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index 98d9053eb1d98cd8ff52e740cc02f634d2f9bf01..b90cadfb1e20c46814791e263cb43bbfceedd184 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -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') diff --git a/app/workers/project_cache_worker.rb b/app/workers/project_cache_worker.rb index 4c14565dce52fd7668ea3e5d0fb2499bdf3ce54c..61416d634bdc25d43d52ad6a08238484e6f422f0 100644 --- a/app/workers/project_cache_worker.rb +++ b/app/workers/project_cache_worker.rb @@ -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 diff --git a/app/workers/repository_import_worker.rb b/app/workers/repository_import_worker.rb index e6a50afedb12003bb99c3ebb09056097767733c3..94832872d13ddccb192eaf05ac1d29f269b1bd57 100644 --- a/app/workers/repository_import_worker.rb +++ b/app/workers/repository_import_worker.rb @@ -28,7 +28,7 @@ class RepositoryImportWorker 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 diff --git a/db/migrate/20150717130904_add_commits_count_to_project.rb b/db/migrate/20150717130904_add_commits_count_to_project.rb new file mode 100644 index 0000000000000000000000000000000000000000..9b46daa5933901797740130f80a672c965f21463 --- /dev/null +++ b/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 diff --git a/db/schema.rb b/db/schema.rb index d6c34a77ee614b2776774540cc0f89affa502b88..a63c2d05821226bd0a556f68333306891f9d2bec 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -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" @@ -374,6 +374,7 @@ ActiveRecord::Schema.define(version: 20150713160110) do 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 diff --git a/lib/repository_cache.rb b/lib/repository_cache.rb index 639687067ecf49e6ccbc864242f25325a9b4b66b..8ddc3511293e5dfd7419bb368dd022cbbd604eda 100644 --- a/lib/repository_cache.rb +++ b/lib/repository_cache.rb @@ -20,6 +20,10 @@ class RepositoryCache end def exist?(key) - backend.exist?(key) + backend.exist?(cache_key(key)) + end + + def read(key) + backend.read(cache_key(key)) end end