diff options
author | Ahmad Sherif <me@ahmadsherif.com> | 2017-07-25 21:49:12 +0200 |
---|---|---|
committer | Ahmad Sherif <me@ahmadsherif.com> | 2017-07-27 20:07:40 +0200 |
commit | cd5ae5cb2beeeff132d88805c888d1962419931f (patch) | |
tree | d894335437db9e7dc0d0ef2ae153d566eba5e2ae /lib/gitlab/gitaly_client/ref_service.rb | |
parent | 86ae883b638d29953f26a87efc16ae613ff865e4 (diff) | |
download | gitlab-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.rb | 25 |
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 |