summaryrefslogtreecommitdiff
path: root/lib/gitlab/git
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2018-09-17 16:29:42 +0000
committerDouwe Maan <douwe@gitlab.com>2018-09-17 16:29:42 +0000
commitbff85a4b1c0c2b8e5dca1dc75bf9d1e902312bcf (patch)
tree3ae04a26e7db45148246690ef801fb91762400f8 /lib/gitlab/git
parent32f01b3ad086516f6c82e2cbfac59ec214606563 (diff)
parentc9d6c02f159926c03b2645aba1d454e103bfff91 (diff)
downloadgitlab-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/gitlab/git')
-rw-r--r--lib/gitlab/git/diff_stats_collection.rb17
-rw-r--r--lib/gitlab/git/repository.rb10
2 files changed, 27 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?