summaryrefslogtreecommitdiff
path: root/lib/gitlab/gitaly_client/ref_service.rb
diff options
context:
space:
mode:
authorAhmad Sherif <me@ahmadsherif.com>2017-07-25 21:49:12 +0200
committerAhmad Sherif <me@ahmadsherif.com>2017-07-27 20:07:40 +0200
commitcd5ae5cb2beeeff132d88805c888d1962419931f (patch)
treed894335437db9e7dc0d0ef2ae153d566eba5e2ae /lib/gitlab/gitaly_client/ref_service.rb
parent86ae883b638d29953f26a87efc16ae613ff865e4 (diff)
downloadgitlab-ce-feature/migrate-repository-tags-to-gitaly.tar.gz
Migrate Repository#tags to Gitalyfeature/migrate-repository-tags-to-gitaly
Closes gitaly#411
Diffstat (limited to 'lib/gitlab/gitaly_client/ref_service.rb')
-rw-r--r--lib/gitlab/gitaly_client/ref_service.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/gitlab/gitaly_client/ref_service.rb b/lib/gitlab/gitaly_client/ref_service.rb
index 2c3d53410ac..2306fb3cbf5 100644
--- a/lib/gitlab/gitaly_client/ref_service.rb
+++ b/lib/gitlab/gitaly_client/ref_service.rb
@@ -52,6 +52,12 @@ module Gitlab
consume_branches_response(response)
end
+ def tags
+ request = Gitaly::FindAllTagsRequest.new(repository: @gitaly_repo)
+ response = GitalyClient.call(@storage, :ref_service, :find_all_tags, request)
+ consume_tags_response(response)
+ end
+
private
def consume_refs_response(response)
@@ -79,6 +85,25 @@ module Gitlab
end
end
+ def consume_tags_response(response)
+ response.flat_map do |message|
+ message.tags.map do |gitaly_tag|
+ if gitaly_tag.target_commit.present?
+ commit = GitalyClient::Commit.new(@repository, gitaly_tag.target_commit)
+ gitaly_commit = Gitlab::Git::Commit.new(commit)
+ end
+
+ Gitlab::Git::Tag.new(
+ @repository,
+ encode!(gitaly_tag.name.dup),
+ gitaly_tag.id,
+ gitaly_commit,
+ encode!(gitaly_tag.message.chomp)
+ )
+ end
+ end
+ end
+
def commit_from_local_branches_response(response)
# Git messages have no encoding enforcements. However, in the UI we only
# handle UTF-8, so basically we cross our fingers that the message force