summaryrefslogtreecommitdiff
path: root/app/models/repository.rb
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2018-03-28 16:16:33 +0000
committerRémy Coutable <remy@rymai.me>2018-03-28 16:16:33 +0000
commit141748929dd006e4b506028e44e7dfdf3988c936 (patch)
tree63d642060fb4f65a99a0d1ebf497ee37cceceea5 /app/models/repository.rb
parentbe944a649032ccfa07f4f98cb2d048e14725fed1 (diff)
parent05b4b2d9679ccd09cf9723207603d0d3f670df30 (diff)
downloadgitlab-ce-141748929dd006e4b506028e44e7dfdf3988c936.tar.gz
Merge branch '44657-reuse-root_ref_hash-on-branches' into 'master'
Avoid Gitaly n+1 times per request for Project Branches performance Closes #44657 et #37429 See merge request gitlab-org/gitlab-ce!17998
Diffstat (limited to 'app/models/repository.rb')
-rw-r--r--app/models/repository.rb4
1 files changed, 2 insertions, 2 deletions
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 2ba1c6cb8c9..fd1afafe4df 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -249,13 +249,13 @@ class Repository
end
def diverging_commit_counts(branch)
- root_ref_hash = raw_repository.commit(root_ref).id
+ @root_ref_hash ||= raw_repository.commit(root_ref).id
cache.fetch(:"diverging_commit_counts_#{branch.name}") do
# Rugged seems to throw a `ReferenceError` when given branch_names rather
# than SHA-1 hashes
number_commits_behind, number_commits_ahead =
raw_repository.count_commits_between(
- root_ref_hash,
+ @root_ref_hash,
branch.dereferenced_target.sha,
left_right: true,
max_count: MAX_DIVERGING_COUNT)