diff options
author | Stan Hu <stanhu@gmail.com> | 2017-07-03 15:46:52 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2017-07-03 15:48:13 -0700 |
commit | 2a9c2fec4efd1b88e2ee8ad87818d8435a97619f (patch) | |
tree | 35feed6d2e35dbffbe489da9f38b15fa93d51c43 | |
parent | b5b4054d5882782892d0a860c7e95db9a22bfdec (diff) | |
download | gitlab-ce-sh-optimize-project-commit-api.tar.gz |
Optimize creation of commit API by using Repository#commit instead of Repository#commitssh-optimize-project-commit-api
Repository#commits is expensive because it has to use Rugged to walk the Git
tree as opposed to doing a direct ref lookup.
Improves performance in #34533
-rw-r--r-- | changelogs/unreleased/sh-optimize-project-commit-api.yml | 4 | ||||
-rw-r--r-- | lib/api/commits.rb | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/changelogs/unreleased/sh-optimize-project-commit-api.yml b/changelogs/unreleased/sh-optimize-project-commit-api.yml new file mode 100644 index 00000000000..e6a8a80593c --- /dev/null +++ b/changelogs/unreleased/sh-optimize-project-commit-api.yml @@ -0,0 +1,4 @@ +--- +title: Optimize creation of commit API by using Repository#commit instead of Repository#commits +merge_request: +author: diff --git a/lib/api/commits.rb b/lib/api/commits.rb index c6fc17cc391..bcb842b9211 100644 --- a/lib/api/commits.rb +++ b/lib/api/commits.rb @@ -67,7 +67,7 @@ module API result = ::Files::MultiService.new(user_project, current_user, attrs).execute if result[:status] == :success - commit_detail = user_project.repository.commits(result[:result], limit: 1).first + commit_detail = user_project.repository.commit(result[:result]) present commit_detail, with: Entities::RepoCommitDetail else render_api_error!(result[:message], 400) |