diff options
Diffstat (limited to 'lib/gitlab/gitaly_client')
-rw-r--r-- | lib/gitlab/gitaly_client/blob_service.rb | 19 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/blobs_stitcher.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/commit_service.rb | 10 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/conflicts_service.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/list_blobs_adapter.rb | 21 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/repository_service.rb | 17 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/storage_settings.rb | 2 |
7 files changed, 54 insertions, 21 deletions
diff --git a/lib/gitlab/gitaly_client/blob_service.rb b/lib/gitlab/gitaly_client/blob_service.rb index e4c8dc150a5..362ecbd845d 100644 --- a/lib/gitlab/gitaly_client/blob_service.rb +++ b/lib/gitlab/gitaly_client/blob_service.rb @@ -19,6 +19,25 @@ module Gitlab consume_blob_response(response) end + def list_blobs(revisions, limit: 0, bytes_limit: 0, dynamic_timeout: nil) + request = Gitaly::ListBlobsRequest.new( + repository: @gitaly_repo, + revisions: Array.wrap(revisions), + limit: limit, + bytes_limit: bytes_limit + ) + + timeout = + if dynamic_timeout + [dynamic_timeout, GitalyClient.medium_timeout].min + else + GitalyClient.medium_timeout + end + + response = GitalyClient.call(@gitaly_repo.storage_name, :blob_service, :list_blobs, request, timeout: timeout) + GitalyClient::BlobsStitcher.new(GitalyClient::ListBlobsAdapter.new(response)) + end + def batch_lfs_pointers(blob_ids) return [] if blob_ids.empty? diff --git a/lib/gitlab/gitaly_client/blobs_stitcher.rb b/lib/gitlab/gitaly_client/blobs_stitcher.rb index 2f6d146b5c4..6c51b4cf8c6 100644 --- a/lib/gitlab/gitaly_client/blobs_stitcher.rb +++ b/lib/gitlab/gitaly_client/blobs_stitcher.rb @@ -35,8 +35,8 @@ module Gitlab Gitlab::Git::Blob.new( id: blob_data[:oid], - mode: blob_data[:mode].to_s(8), - name: File.basename(blob_data[:path]), + mode: blob_data[:mode]&.to_s(8), + name: blob_data[:path] && File.basename(blob_data[:path]), path: blob_data[:path], size: blob_data[:size], commit_id: blob_data[:revision], diff --git a/lib/gitlab/gitaly_client/commit_service.rb b/lib/gitlab/gitaly_client/commit_service.rb index 3d24b4d53a4..b894207f0aa 100644 --- a/lib/gitlab/gitaly_client/commit_service.rb +++ b/lib/gitlab/gitaly_client/commit_service.rb @@ -248,6 +248,16 @@ module Gitlab consume_commits_response(response) end + def list_commits(revisions) + request = Gitaly::ListCommitsRequest.new( + repository: @gitaly_repo, + revisions: Array.wrap(revisions) + ) + + response = GitalyClient.call(@repository.storage, :commit_service, :list_commits, request, timeout: GitalyClient.medium_timeout) + consume_commits_response(response) + end + def list_commits_by_oid(oids) return [] if oids.empty? diff --git a/lib/gitlab/gitaly_client/conflicts_service.rb b/lib/gitlab/gitaly_client/conflicts_service.rb index fc40c23611a..300800189f1 100644 --- a/lib/gitlab/gitaly_client/conflicts_service.rb +++ b/lib/gitlab/gitaly_client/conflicts_service.rb @@ -49,7 +49,7 @@ module Gitlab end end - response = GitalyClient.call(@repository.storage, :conflicts_service, :resolve_conflicts, req_enum, remote_storage: target_repository.storage, timeout: GitalyClient.medium_timeout) + response = GitalyClient.call(@repository.storage, :conflicts_service, :resolve_conflicts, req_enum, remote_storage: target_repository.storage, timeout: GitalyClient.long_timeout) if response.resolution_error.present? raise Gitlab::Git::Conflict::Resolver::ResolutionError, response.resolution_error diff --git a/lib/gitlab/gitaly_client/list_blobs_adapter.rb b/lib/gitlab/gitaly_client/list_blobs_adapter.rb new file mode 100644 index 00000000000..bba668e4dc6 --- /dev/null +++ b/lib/gitlab/gitaly_client/list_blobs_adapter.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module Gitlab + module GitalyClient + class ListBlobsAdapter + include Enumerable + + def initialize(rpc_response) + @rpc_response = rpc_response + end + + def each + @rpc_response.each do |msg| + msg.blobs.each do |blob| + yield blob + end + end + end + end + end +end diff --git a/lib/gitlab/gitaly_client/repository_service.rb b/lib/gitlab/gitaly_client/repository_service.rb index 6a75096ff80..009aeaf868a 100644 --- a/lib/gitlab/gitaly_client/repository_service.rb +++ b/lib/gitlab/gitaly_client/repository_service.rb @@ -152,23 +152,6 @@ module Gitlab ) end - def rebase_in_progress?(rebase_id) - request = Gitaly::IsRebaseInProgressRequest.new( - repository: @gitaly_repo, - rebase_id: rebase_id.to_s - ) - - response = GitalyClient.call( - @storage, - :repository_service, - :is_rebase_in_progress, - request, - timeout: GitalyClient.fast_timeout - ) - - response.in_progress - end - def squash_in_progress?(squash_id) request = Gitaly::IsSquashInProgressRequest.new( repository: @gitaly_repo, diff --git a/lib/gitlab/gitaly_client/storage_settings.rb b/lib/gitlab/gitaly_client/storage_settings.rb index f66dc3010ea..4cc0269673f 100644 --- a/lib/gitlab/gitaly_client/storage_settings.rb +++ b/lib/gitlab/gitaly_client/storage_settings.rb @@ -52,7 +52,7 @@ module Gitlab @legacy_disk_path = File.expand_path(storage['path'], Rails.root) if storage['path'] storage['path'] = Deprecated - @hash = storage.with_indifferent_access + @hash = ActiveSupport::HashWithIndifferentAccess.new(storage) end def gitaly_address |