diff options
author | Douwe Maan <douwe@gitlab.com> | 2018-09-17 16:29:42 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2018-09-17 16:29:42 +0000 |
commit | bff85a4b1c0c2b8e5dca1dc75bf9d1e902312bcf (patch) | |
tree | 3ae04a26e7db45148246690ef801fb91762400f8 /lib | |
parent | 32f01b3ad086516f6c82e2cbfac59ec214606563 (diff) | |
parent | c9d6c02f159926c03b2645aba1d454e103bfff91 (diff) | |
download | gitlab-ce-bff85a4b1c0c2b8e5dca1dc75bf9d1e902312bcf.tar.gz |
Merge branch 'osw-gitaly-diff-stats-client' into 'master'
Add Gitaly diff stats RPC client
See merge request gitlab-org/gitlab-ce!21732
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/git/diff_stats_collection.rb | 17 | ||||
-rw-r--r-- | lib/gitlab/git/repository.rb | 10 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/commit_service.rb | 11 |
3 files changed, 38 insertions, 0 deletions
diff --git a/lib/gitlab/git/diff_stats_collection.rb b/lib/gitlab/git/diff_stats_collection.rb new file mode 100644 index 00000000000..84d9e46f98e --- /dev/null +++ b/lib/gitlab/git/diff_stats_collection.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module Gitlab + module Git + class DiffStatsCollection + include Enumerable + + def initialize(diff_stats) + @collection = diff_stats + end + + def each(&block) + @collection.each(&block) + end + end + end +end diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb index 1b8d320ff3b..f7e28590b98 100644 --- a/lib/gitlab/git/repository.rb +++ b/lib/gitlab/git/repository.rb @@ -438,6 +438,16 @@ module Gitlab Gitlab::Git::DiffCollection.new(iterator, options) end + def diff_stats(left_id, right_id) + stats = wrapped_gitaly_errors do + gitaly_commit_client.diff_stats(left_id, right_id) + end + + Gitlab::Git::DiffStatsCollection.new(stats) + rescue CommandError + Gitlab::Git::DiffStatsCollection.new([]) + end + # Returns a RefName for a given SHA def ref_name_for_sha(ref_path, sha) raise ArgumentError, "sha can't be empty" unless sha.present? diff --git a/lib/gitlab/gitaly_client/commit_service.rb b/lib/gitlab/gitaly_client/commit_service.rb index f65d7383dc7..6c95abdcb4b 100644 --- a/lib/gitlab/gitaly_client/commit_service.rb +++ b/lib/gitlab/gitaly_client/commit_service.rb @@ -172,6 +172,17 @@ module Gitlab consume_commits_response(response) end + def diff_stats(left_commit_sha, right_commit_sha) + request = Gitaly::DiffStatsRequest.new( + repository: @gitaly_repo, + left_commit_id: left_commit_sha, + right_commit_id: right_commit_sha + ) + + response = GitalyClient.call(@repository.storage, :diff_service, :diff_stats, request, timeout: GitalyClient.medium_timeout) + response.flat_map(&:stats) + end + def find_all_commits(opts = {}) request = Gitaly::FindAllCommitsRequest.new( repository: @gitaly_repo, |