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-2a9c2fec4efd1b88e2ee8ad87818d8435a97619f.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) |
