diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-09-20 16:18:24 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-09-20 16:18:24 +0300 |
commit | 0653e08efd039a5905f3fa4f6e9cef9f5d2f799c (patch) | |
tree | 4dcc884cf6d81db44adae4aa99f8ec1233a41f55 /lib/gitlab/gitaly_client | |
parent | 744144d28e3e7fddc117924fef88de5d9674fe4c (diff) |
Add latest changes from gitlab-org/gitlab@14-3-stable-eev14.3.0-rc42
Diffstat (limited to 'lib/gitlab/gitaly_client')
-rw-r--r-- | lib/gitlab/gitaly_client/blob_service.rb | 5 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/commit_service.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/ref_service.rb | 76 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/repository_service.rb | 36 |
4 files changed, 48 insertions, 75 deletions
diff --git a/lib/gitlab/gitaly_client/blob_service.rb b/lib/gitlab/gitaly_client/blob_service.rb index 362ecbd845d..3b08a833aeb 100644 --- a/lib/gitlab/gitaly_client/blob_service.rb +++ b/lib/gitlab/gitaly_client/blob_service.rb @@ -19,12 +19,13 @@ module Gitlab consume_blob_response(response) end - def list_blobs(revisions, limit: 0, bytes_limit: 0, dynamic_timeout: nil) + def list_blobs(revisions, limit: 0, bytes_limit: 0, with_paths: false, dynamic_timeout: nil) request = Gitaly::ListBlobsRequest.new( repository: @gitaly_repo, revisions: Array.wrap(revisions), limit: limit, - bytes_limit: bytes_limit + bytes_limit: bytes_limit, + with_paths: with_paths ) timeout = diff --git a/lib/gitlab/gitaly_client/commit_service.rb b/lib/gitlab/gitaly_client/commit_service.rb index fa616a252e4..75588ad980c 100644 --- a/lib/gitlab/gitaly_client/commit_service.rb +++ b/lib/gitlab/gitaly_client/commit_service.rb @@ -127,6 +127,7 @@ module Gitlab entries = response.flat_map do |message| cursor = message.pagination_cursor if message.pagination_cursor + message.entries.map do |gitaly_tree_entry| Gitlab::Git::Tree.new( id: gitaly_tree_entry.oid, @@ -255,11 +256,12 @@ module Gitlab consume_commits_response(response) end - def list_commits(revisions, reverse: false) + def list_commits(revisions, reverse: false, pagination_params: nil) request = Gitaly::ListCommitsRequest.new( repository: @gitaly_repo, revisions: Array.wrap(revisions), - reverse: reverse + reverse: reverse, + pagination_params: pagination_params ) response = GitalyClient.call(@repository.storage, :commit_service, :list_commits, request, timeout: GitalyClient.medium_timeout) diff --git a/lib/gitlab/gitaly_client/ref_service.rb b/lib/gitlab/gitaly_client/ref_service.rb index 7097d5bd181..235eef4575e 100644 --- a/lib/gitlab/gitaly_client/ref_service.rb +++ b/lib/gitlab/gitaly_client/ref_service.rb @@ -5,6 +5,16 @@ module Gitlab class RefService include Gitlab::EncodingHelper + TAGS_SORT_KEY = { + 'name' => Gitaly::FindAllTagsRequest::SortBy::Key::REFNAME, + 'updated' => Gitaly::FindAllTagsRequest::SortBy::Key::CREATORDATE + }.freeze + + TAGS_SORT_DIRECTION = { + 'asc' => Gitaly::SortDirection::ASCENDING, + 'desc' => Gitaly::SortDirection::DESCENDING + }.freeze + # 'repository' is a Gitlab::Git::Repository def initialize(repository) @repository = repository @@ -52,38 +62,6 @@ module Gitlab consume_refs_response(response) { |name| Gitlab::Git.tag_name(name) } end - def find_ref_name(commit_id, ref_prefix) - request = Gitaly::FindRefNameRequest.new( - repository: @gitaly_repo, - commit_id: commit_id, - prefix: ref_prefix - ) - response = GitalyClient.call(@storage, :ref_service, :find_ref_name, request, timeout: GitalyClient.medium_timeout) - encode!(response.name.dup) - end - - def list_new_blobs(newrev, limit = 0, dynamic_timeout: nil) - request = Gitaly::ListNewBlobsRequest.new( - repository: @gitaly_repo, - commit_id: newrev, - limit: limit - ) - - timeout = - if dynamic_timeout - [dynamic_timeout, GitalyClient.medium_timeout].min - else - GitalyClient.medium_timeout - end - - response = GitalyClient.call(@storage, :ref_service, :list_new_blobs, request, timeout: timeout) - response.flat_map do |msg| - # Returns an Array of Gitaly::NewBlobObject objects - # Available methods are: #size, #oid and #path - msg.new_blob_objects - end - end - def count_tag_names tag_names.count end @@ -94,13 +72,15 @@ module Gitlab def local_branches(sort_by: nil, pagination_params: nil) request = Gitaly::FindLocalBranchesRequest.new(repository: @gitaly_repo, pagination_params: pagination_params) - request.sort_by = sort_by_param(sort_by) if sort_by + request.sort_by = sort_local_branches_by_param(sort_by) if sort_by response = GitalyClient.call(@storage, :ref_service, :find_local_branches, request, timeout: GitalyClient.fast_timeout) consume_find_local_branches_response(response) end - def tags + def tags(sort_by: nil) request = Gitaly::FindAllTagsRequest.new(repository: @gitaly_repo) + request.sort_by = sort_tags_by_param(sort_by) if sort_by + response = GitalyClient.call(@storage, :ref_service, :find_all_tags, request, timeout: GitalyClient.medium_timeout) consume_tags_response(response) end @@ -127,6 +107,21 @@ module Gitlab Gitlab::Git::Branch.new(@repository, encode!(branch.name.dup), branch.target_commit.id, target_commit) end + def find_tag(tag_name) + return if tag_name.blank? + + request = Gitaly::FindTagRequest.new( + repository: @gitaly_repo, + tag_name: encode_binary(tag_name) + ) + + response = GitalyClient.call(@repository.storage, :ref_service, :find_tag, request, timeout: GitalyClient.medium_timeout) + tag = response.tag + return unless tag + + Gitlab::Git::Tag.new(@repository, tag) + end + def delete_refs(refs: [], except_with_prefixes: []) request = Gitaly::DeleteRefsRequest.new( repository: @gitaly_repo, @@ -211,7 +206,7 @@ module Gitlab response.flat_map { |message| message.names.map { |name| yield(name) } } end - def sort_by_param(sort_by) + def sort_local_branches_by_param(sort_by) sort_by = 'name' if sort_by == 'name_asc' enum_value = Gitaly::FindLocalBranchesRequest::SortBy.resolve(sort_by.upcase.to_sym) @@ -220,6 +215,17 @@ module Gitlab enum_value end + def sort_tags_by_param(sort_by) + match = sort_by.match(/^(?<key>name|updated)_(?<direction>asc|desc)$/) + + return unless match + + Gitaly::FindAllTagsRequest::SortBy.new( + key: TAGS_SORT_KEY[match[:key]], + direction: TAGS_SORT_DIRECTION[match[:direction]] + ) + end + def consume_find_local_branches_response(response) response.flat_map do |message| message.branches.map do |gitaly_branch| diff --git a/lib/gitlab/gitaly_client/repository_service.rb b/lib/gitlab/gitaly_client/repository_service.rb index 2e26b3341a2..7e7d543d0a5 100644 --- a/lib/gitlab/gitaly_client/repository_service.rb +++ b/lib/gitlab/gitaly_client/repository_service.rb @@ -155,23 +155,6 @@ module Gitlab ) end - def squash_in_progress?(squash_id) - request = Gitaly::IsSquashInProgressRequest.new( - repository: @gitaly_repo, - squash_id: squash_id.to_s - ) - - response = GitalyClient.call( - @storage, - :repository_service, - :is_squash_in_progress, - request, - timeout: GitalyClient.fast_timeout - ) - - response.in_progress - end - def fetch_source_branch(source_repository, source_branch, local_ref) request = Gitaly::FetchSourceBranchRequest.new( repository: @gitaly_repo, @@ -281,25 +264,6 @@ module Gitlab nil end - def set_config(entries) - return if entries.empty? - - request = Gitaly::SetConfigRequest.new(repository: @gitaly_repo) - entries.each do |key, value| - request.entries << build_set_config_entry(key, value) - end - - GitalyClient.call( - @storage, - :repository_service, - :set_config, - request, - timeout: GitalyClient.fast_timeout - ) - - nil - end - def license_short_name request = Gitaly::FindLicenseRequest.new(repository: @gitaly_repo) |