Class: Gitlab::GitalyClient::DiffService
- Inherits:
-
Object
- Object
- Gitlab::GitalyClient::DiffService
- Includes:
- WithFeatureFlagActors
- Defined in:
- lib/gitlab/gitaly_client/diff_service.rb
Constant Summary collapse
- 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
Instance Attribute Summary
Attributes included from WithFeatureFlagActors
Instance Method Summary collapse
-
#diff_blobs(blob_pairs, diff_mode: DIFF_MODES[:unspecified], whitespace_changes: WHITESPACE_CHANGES[:unspecified], patch_bytes_limit: 0) ⇒ GitalyClient::DiffBlobsStitcher
Requests diffs between blob pairs via Gitaly’s DiffBlobs RPC using blob_pairs field.
-
#diff_blobs_with_raw_info(raw_info, diff_mode: DIFF_MODES[:unspecified], whitespace_changes: WHITESPACE_CHANGES[:unspecified], patch_bytes_limit: 0) ⇒ GitalyClient::DiffBlobsStitcher
Requests diffs between blob pairs via Gitaly’s DiffBlobs RPC using raw_info field.
-
#initialize(repository) ⇒ DiffService
constructor
A new instance of DiffService.
Methods included from WithFeatureFlagActors
#gitaly_client_call, #gitaly_feature_flag_actors, #group_actor, #project_actor, #user_actor
Constructor Details
#initialize(repository) ⇒ DiffService
Returns a new instance of DiffService.
19 20 21 22 23 24 |
# File 'lib/gitlab/gitaly_client/diff_service.rb', line 19 def initialize(repository) @gitaly_repo = repository.gitaly_repository @storage = repository.storage self.repository_actor = repository end |
Instance Method Details
#diff_blobs(blob_pairs, diff_mode: DIFF_MODES[:unspecified], whitespace_changes: WHITESPACE_CHANGES[:unspecified], patch_bytes_limit: 0) ⇒ GitalyClient::DiffBlobsStitcher
Requests diffs between blob pairs via Gitaly’s DiffBlobs RPC using blob_pairs field.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/gitlab/gitaly_client/diff_service.rb', line 33 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 |
#diff_blobs_with_raw_info(raw_info, diff_mode: DIFF_MODES[:unspecified], whitespace_changes: WHITESPACE_CHANGES[:unspecified], patch_bytes_limit: 0) ⇒ GitalyClient::DiffBlobsStitcher
Requests diffs between blob pairs via Gitaly’s DiffBlobs RPC using raw_info field. More efficient for large batches of files compared to blob_pairs approach.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/gitlab/gitaly_client/diff_service.rb', line 59 def diff_blobs_with_raw_info( raw_info, diff_mode: DIFF_MODES[:unspecified], whitespace_changes: WHITESPACE_CHANGES[:unspecified], patch_bytes_limit: 0 ) request = Gitaly::DiffBlobsRequest.new( repository: @gitaly_repo, raw_info: raw_info, 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 |