diff options
-rw-r--r-- | app/models/project.rb | 1 | ||||
-rw-r--r-- | app/workers/project_cache_worker.rb | 1 | ||||
-rw-r--r-- | changelogs/unreleased/refresh-commit-count-after-head-change.yml | 5 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 6 |
4 files changed, 13 insertions, 0 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index 4cc13f372c1..7f052079e32 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1378,6 +1378,7 @@ class Project < ActiveRecord::Base repository.raw_repository.write_ref('HEAD', "refs/heads/#{branch}") repository.copy_gitattributes(branch) repository.after_change_head + ProjectCacheWorker.perform_async(self.id, [], [:commit_count]) reload_default_branch else errors.add(:base, "Could not change HEAD: branch '#{branch}' does not exist") diff --git a/app/workers/project_cache_worker.rb b/app/workers/project_cache_worker.rb index d27b5e62574..b31099bc670 100644 --- a/app/workers/project_cache_worker.rb +++ b/app/workers/project_cache_worker.rb @@ -27,6 +27,7 @@ class ProjectCacheWorker # rubocop: enable CodeReuse/ActiveRecord def update_statistics(project, statistics = []) + return if Gitlab::Database.read_only? return unless try_obtain_lease_for(project.id, :update_statistics) Rails.logger.info("Updating statistics for project #{project.id}") diff --git a/changelogs/unreleased/refresh-commit-count-after-head-change.yml b/changelogs/unreleased/refresh-commit-count-after-head-change.yml new file mode 100644 index 00000000000..27e278958b8 --- /dev/null +++ b/changelogs/unreleased/refresh-commit-count-after-head-change.yml @@ -0,0 +1,5 @@ +--- +title: Refresh commit count after repository head changes +merge_request: 26473 +author: +type: fixed diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index b2392f9521f..9d9611b1db0 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -2388,6 +2388,12 @@ describe Project do project.change_head(project.default_branch) end + it 'updates commit count' do + expect(ProjectCacheWorker).to receive(:perform_async).with(project.id, [], [:commit_count]) + + project.change_head(project.default_branch) + end + it 'copies the gitattributes' do expect(project.repository).to receive(:copy_gitattributes).with(project.default_branch) project.change_head(project.default_branch) |