diff options
author | Stan Hu <stanhu@gmail.com> | 2016-08-26 20:15:00 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2016-08-26 20:16:51 -0700 |
commit | d2627df38f5117250bb319d1f034e9f081b9a376 (patch) | |
tree | 2d63d90940e32004a66026dc9e6fe6c2a3a81912 | |
parent | c288916db124f1a0aaf5fe3eff53335f23d11921 (diff) | |
download | gitlab-ce-speed-up-find-branch.tar.gz |
Speed up Repository#find_branch and Repository#find_tag by doing a direct lookupspeed-up-find-branch
The previous implementation would iterate through each branch or tag looking
for the name in question. This is unnecessarily slow when a repo has many
branches or tags. Instead, Rugged can do a single lookup by scanning
refs/heads/<branch_name> or the packed-refs file.
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | app/models/repository.rb | 4 |
2 files changed, 3 insertions, 2 deletions
diff --git a/CHANGELOG b/CHANGELOG index 3548115dff3..26a40395f2e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 8.12.0 (unreleased) - Add two-factor recovery endpoint to internal API !5510 + - Speed up Repository#find_branch and Repository#find_tag by doing a direct lookup - Add font color contrast to external label in admin area (ClemMakesApps) - Change merge_error column from string to text type - Reduce contributions calendar data payload (ClemMakesApps) diff --git a/app/models/repository.rb b/app/models/repository.rb index 91bdafdac99..52215c441e3 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -121,11 +121,11 @@ class Repository end def find_branch(name) - raw_repository.branches.find { |branch| branch.name == name } + raw_repository.branches[name] end def find_tag(name) - tags.find { |tag| tag.name == name } + tags[name] end def add_branch(user, branch_name, target) |