diff options
author | Rémy Coutable <remy@rymai.me> | 2018-06-13 07:41:00 +0000 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2018-06-13 07:41:00 +0000 |
commit | 886b81e5c71529f1d61c4de4c16aab6171e1600e (patch) | |
tree | ac93a814cbdb73c722eae6d671be36a3ebb98ad5 /lib/api | |
parent | a84cdff0dbb6a20a26c7e25a81f4bdf0a33b9bfc (diff) | |
parent | 404ef05002e067d057dabafb4945d79a49d028bc (diff) | |
download | gitlab-ce-886b81e5c71529f1d61c4de4c16aab6171e1600e.tar.gz |
Merge branch 'commits_api_with_stats' into 'master'
Added with_stats option to GET /projects/:id/repository/commits (API)
See merge request gitlab-org/gitlab-ce!19484
Diffstat (limited to 'lib/api')
-rw-r--r-- | lib/api/commits.rb | 22 | ||||
-rw-r--r-- | lib/api/entities.rb | 4 |
2 files changed, 17 insertions, 9 deletions
diff --git a/lib/api/commits.rb b/lib/api/commits.rb index 684955a1b24..964780cba6a 100644 --- a/lib/api/commits.rb +++ b/lib/api/commits.rb @@ -15,19 +15,21 @@ module API end params do optional :ref_name, type: String, desc: 'The name of a repository branch or tag, if not given the default branch is used' - optional :since, type: DateTime, desc: 'Only commits after or on this date will be returned' - optional :until, type: DateTime, desc: 'Only commits before or on this date will be returned' - optional :path, type: String, desc: 'The file path' - optional :all, type: Boolean, desc: 'Every commit will be returned' + optional :since, type: DateTime, desc: 'Only commits after or on this date will be returned' + optional :until, type: DateTime, desc: 'Only commits before or on this date will be returned' + optional :path, type: String, desc: 'The file path' + optional :all, type: Boolean, desc: 'Every commit will be returned' + optional :with_stats, type: Boolean, desc: 'Stats about each commit will be added to the response' use :pagination end get ':id/repository/commits' do - path = params[:path] + path = params[:path] before = params[:until] - after = params[:since] - ref = params[:ref_name] || user_project.try(:default_branch) || 'master' unless params[:all] + after = params[:since] + ref = params[:ref_name] || user_project.try(:default_branch) || 'master' unless params[:all] offset = (params[:page] - 1) * params[:per_page] - all = params[:all] + all = params[:all] + with_stats = params[:with_stats] commits = user_project.repository.commits(ref, path: path, @@ -47,7 +49,9 @@ module API paginated_commits = Kaminari.paginate_array(commits, total_count: commit_count) - present paginate(paginated_commits), with: Entities::Commit + serializer = with_stats ? Entities::CommitWithStats : Entities::Commit + + present paginate(paginated_commits), with: serializer end desc 'Commit multiple file changes as one commit' do diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 22afcb9edf2..52e716a7686 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -308,6 +308,10 @@ module API expose :additions, :deletions, :total end + class CommitWithStats < Commit + expose :stats, using: Entities::CommitStats + end + class CommitDetail < Commit expose :stats, using: Entities::CommitStats, if: :stats expose :status |