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:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-08-02 06:09:33 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-08-02 06:09:33 +0300
commitfd1c75caebf0eae26d2298c68aaeac3c940f84d9 (patch)
tree95f31110d545ade33287ff6135c49bb13d90520b /lib/gitlab/gitaly_client
parent80a2f6b1d6f9a816f51d8cf00e928ce391c77ca0 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/gitaly_client')
-rw-r--r--lib/gitlab/gitaly_client/operation_service.rb22
1 files changed, 20 insertions, 2 deletions
diff --git a/lib/gitlab/gitaly_client/operation_service.rb b/lib/gitlab/gitaly_client/operation_service.rb
index 35d3ddf5d7f..8f5d0645a5d 100644
--- a/lib/gitlab/gitaly_client/operation_service.rb
+++ b/lib/gitlab/gitaly_client/operation_service.rb
@@ -44,8 +44,26 @@ module Gitlab
end
Gitlab::Git::Tag.new(@repository, response.tag)
- rescue GRPC::FailedPrecondition => e
- raise Gitlab::Git::Repository::InvalidRef, e
+ rescue GRPC::BadStatus => e
+ detailed_error = GitalyClient.decode_detailed_error(e)
+
+ case detailed_error&.error
+ when :access_check
+ access_check_error = detailed_error.access_check
+ # These messages were returned from internal/allowed API calls
+ raise Gitlab::Git::PreReceiveError.new(fallback_message: access_check_error.error_message)
+ when :custom_hook
+ raise Gitlab::Git::PreReceiveError.new(custom_hook_error_message(detailed_error.custom_hook),
+ fallback_message: e.details)
+ when :reference_exists
+ raise Gitlab::Git::Repository::TagExistsError
+ else
+ if e.code == GRPC::Core::StatusCodes::FAILED_PRECONDITION
+ raise Gitlab::Git::Repository::InvalidRef, e
+ end
+
+ raise
+ end
end
def user_create_branch(branch_name, user, start_point)