Commit b8dffd83 authored by Douwe Maan's avatar Douwe Maan

Merge branch 'issue_39' into 'master'

Add new command to list tags from a remote repo.

The output of the `git ls-remote` command is written to the STDOUT so
the client can read and parse the list of tags. If there is an error it's
also written to STDOUT.

Closes #39 

See merge request !47
parents 3d769c75 29edc61c
Pipeline #656 skipped
v2.7.1
- Add new command to list tags from a remote repo
- Add the ability to fetch remote repo with or without tags
v2.7.0
- Add support for ssh AuthorizedKeysCommand query by key
......
require 'fileutils'
require 'timeout'
require 'open3'
require_relative 'gitlab_config'
require_relative 'gitlab_logger'
......@@ -63,6 +64,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}."
......@@ -73,11 +75,32 @@ 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
$logger.info "Pushing branches from #{full_path} to remote #{remote_name}: #{ARGV}"
cmd = %W(git --git-dir=#{full_path} push --tags -- #{remote_name}).concat(ARGV)
cmd = %W(git --git-dir=#{full_path} push -- #{remote_name}).concat(ARGV)
pid = Process.spawn(*cmd)
begin
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment