Files
gitlab-foss/lib/gitlab/gitaly_client/diff_service.rb
2024-07-26 18:12:07 +00:00

46 lines
1.4 KiB
Ruby

# frozen_string_literal: true
module Gitlab
module GitalyClient
class DiffService
include WithFeatureFlagActors
WHITESPACE_CHANGES = {
unspecified: Gitaly::DiffBlobsRequest::WhitespaceChanges::WHITESPACE_CHANGES_UNSPECIFIED,
ignore_spaces: Gitaly::DiffBlobsRequest::WhitespaceChanges::WHITESPACE_CHANGES_IGNORE,
ignore_all_spaces: Gitaly::DiffBlobsRequest::WhitespaceChanges::WHITESPACE_CHANGES_IGNORE_ALL
}.freeze
DIFF_MODES = {
unspecified: Gitaly::DiffBlobsRequest::DiffMode::DIFF_MODE_UNSPECIFIED,
word: Gitaly::DiffBlobsRequest::DiffMode::DIFF_MODE_WORD
}.freeze
def initialize(repository)
@gitaly_repo = repository.gitaly_repository
@storage = repository.storage
self.repository_actor = repository
end
def diff_blobs(
blob_pairs, diff_mode: DIFF_MODES[:unspecified], whitespace_changes: WHITESPACE_CHANGES[:unspecified],
patch_bytes_limit: 0
)
request = Gitaly::DiffBlobsRequest.new(
repository: @gitaly_repo,
blob_pairs: blob_pairs,
diff_mode: diff_mode,
whitespace_changes: whitespace_changes,
patch_bytes_limit: patch_bytes_limit
)
response = gitaly_client_call(@storage, :diff_service, :diff_blobs, request,
timeout: GitalyClient.medium_timeout)
GitalyClient::DiffBlobsStitcher.new(response)
end
end
end
end