Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/gitaly_client/commit_service.rb')
-rw-r--r--lib/gitlab/gitaly_client/commit_service.rb38
1 files changed, 30 insertions, 8 deletions
diff --git a/lib/gitlab/gitaly_client/commit_service.rb b/lib/gitlab/gitaly_client/commit_service.rb
index c10f780665c..1ef5b0f96c2 100644
--- a/lib/gitlab/gitaly_client/commit_service.rb
+++ b/lib/gitlab/gitaly_client/commit_service.rb
@@ -274,8 +274,10 @@ module Gitlab
# else # defaults to :include_merges behavior
# ['foo_bar.rb', 'bar_baz.rb'],
#
- def find_changed_paths(commits, merge_commit_diff_mode: nil)
- request = find_changed_paths_request(commits, merge_commit_diff_mode)
+ def find_changed_paths(objects, merge_commit_diff_mode: nil)
+ request = find_changed_paths_request(objects, merge_commit_diff_mode)
+
+ return [] if request.nil?
response = gitaly_client_call(@repository.storage, :diff_service, :find_changed_paths, request, timeout: GitalyClient.medium_timeout)
response.flat_map do |msg|
@@ -587,6 +589,15 @@ module Gitlab
Hash[commit_refs]
end
+ def get_patch_id(old_revision, new_revision)
+ request = Gitaly::GetPatchIDRequest
+ .new(repository: @gitaly_repo, old_revision: old_revision, new_revision: new_revision)
+
+ response = gitaly_client_call(@repository.storage, :diff_service, :get_patch_id, request, timeout: GitalyClient.medium_timeout)
+
+ response.patch_id
+ end
+
private
def parse_global_options!(options)
@@ -646,16 +657,27 @@ module Gitlab
response.commit
end
- def find_changed_paths_request(commits, merge_commit_diff_mode)
+ def find_changed_paths_request(objects, merge_commit_diff_mode)
diff_mode = MERGE_COMMIT_DIFF_MODES[merge_commit_diff_mode] if Feature.enabled?(:merge_commit_diff_modes)
- commit_requests = commits.map do |commit|
- Gitaly::FindChangedPathsRequest::Request.new(
- commit_request: Gitaly::FindChangedPathsRequest::Request::CommitRequest.new(commit_revision: commit)
- )
+ requests = objects.filter_map do |object|
+ case object
+ when Gitlab::Git::DiffTree
+ Gitaly::FindChangedPathsRequest::Request.new(
+ tree_request: Gitaly::FindChangedPathsRequest::Request::TreeRequest.new(left_tree_revision: object.left_tree_id, right_tree_revision: object.right_tree_id)
+ )
+ when Commit, Gitlab::Git::Commit
+ next if object.sha.blank? || Gitlab::Git.blank_ref?(object.sha)
+
+ Gitaly::FindChangedPathsRequest::Request.new(
+ commit_request: Gitaly::FindChangedPathsRequest::Request::CommitRequest.new(commit_revision: object.sha)
+ )
+ end
end
- Gitaly::FindChangedPathsRequest.new(repository: @gitaly_repo, requests: commit_requests, merge_commit_diff_mode: diff_mode)
+ return if requests.blank?
+
+ Gitaly::FindChangedPathsRequest.new(repository: @gitaly_repo, requests: requests, merge_commit_diff_mode: diff_mode)
end
def path_error_message(path_error)