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:
Diffstat (limited to 'lib/gitlab/gitaly_client/ref_service.rb')
-rw-r--r--lib/gitlab/gitaly_client/ref_service.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/gitlab/gitaly_client/ref_service.rb b/lib/gitlab/gitaly_client/ref_service.rb
index 31e1406356f..42f9c165610 100644
--- a/lib/gitlab/gitaly_client/ref_service.rb
+++ b/lib/gitlab/gitaly_client/ref_service.rb
@@ -120,6 +120,16 @@ module Gitlab
return unless tag
Gitlab::Git::Tag.new(@repository, tag)
+ rescue GRPC::BadStatus => e
+ detailed_error = GitalyClient.decode_detailed_error(e)
+
+ case detailed_error&.error
+ when :tag_not_found
+ raise Gitlab::Git::UnknownRef, "tag does not exist: #{tag_name}"
+ else
+ # When this is not a know structured error we simply re-raise the exception.
+ raise e
+ end
end
def delete_refs(refs: [], except_with_prefixes: [])