diff --git a/CHANGELOG b/CHANGELOG index ee12d2a1f44e36faa873cba16ba944cedb072938..a86ac099aa8fba3973561066eccf13f799d5f209 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,4 @@ v3.0.0 - - Remove list-remote-tags command (Robert Schilling) - Remove rm-tag command (Robert Schilling) - Remove create-branch and rm-branch commands (Robert Schilling) - Update PostReceive worker so it logs a unique JID in Sidekiq diff --git a/lib/gitlab_projects.rb b/lib/gitlab_projects.rb index bc98e09b25cac1a86ceef5160ad1b75c510b9882..f0e077372c2478d8fccf2ff2c4007b942d533515 100644 --- a/lib/gitlab_projects.rb +++ b/lib/gitlab_projects.rb @@ -61,6 +61,7 @@ class GitlabProjects when 'update-head'; update_head when 'push-branches'; push_branches when 'delete-remote-branches'; delete_remote_branches + when 'list-remote-tags'; list_remote_tags when 'gc'; gc else $logger.warn "Attempt to execute invalid gitlab-projects command #{@command.inspect}." @@ -71,6 +72,27 @@ class GitlabProjects protected + def list_remote_tags + remote_name = ARGV.shift + + tag_list, exit_code, error = nil + cmd = %W(git --git-dir=#{full_path} ls-remote --tags #{remote_name}) + + Open3.popen3(*cmd) do |stdin, stdout, stderr, wait_thr| + tag_list = stdout.read + error = stderr.read + exit_code = wait_thr.value.exitstatus + end + + if exit_code.zero? + puts tag_list + true + else + puts error + false + end + end + def push_branches remote_name = ARGV.shift