Unify mirror addition operations to prepare for Gitaly migration
This commit is contained in:
parent
885a4da208
commit
95009cefc2
|
@ -972,8 +972,7 @@ class Repository
|
|||
tmp_remote_name = true
|
||||
end
|
||||
|
||||
add_remote(remote_name, url)
|
||||
set_remote_as_mirror(remote_name, refmap: refmap)
|
||||
add_remote(remote_name, url, mirror_refmap: refmap)
|
||||
fetch_remote(remote_name, forced: forced)
|
||||
ensure
|
||||
remove_remote(remote_name) if tmp_remote_name
|
||||
|
|
|
@ -884,8 +884,11 @@ module Gitlab
|
|||
end
|
||||
end
|
||||
|
||||
def add_remote(remote_name, url)
|
||||
# If `mirror_refmap` is present the remote is set as mirror with that mapping
|
||||
def add_remote(remote_name, url, mirror_refmap: nil)
|
||||
rugged.remotes.create(remote_name, url)
|
||||
|
||||
set_remote_as_mirror(remote_name, refmap: mirror_refmap) if mirror_refmap
|
||||
rescue Rugged::ConfigError
|
||||
remote_update(remote_name, url: url)
|
||||
end
|
||||
|
@ -1155,8 +1158,7 @@ module Gitlab
|
|||
end
|
||||
end
|
||||
|
||||
add_remote(remote_name, url)
|
||||
set_remote_as_mirror(remote_name)
|
||||
add_remote(remote_name, url, mirror_refmap: :all_refs)
|
||||
fetch_remote(remote_name, env: env)
|
||||
ensure
|
||||
remove_remote(remote_name)
|
||||
|
|
|
@ -17,20 +17,6 @@ module Gitlab
|
|||
rugged.config["remote.#{remote_name}.prune"] = true
|
||||
end
|
||||
|
||||
def set_remote_refmap(remote_name, refmap)
|
||||
Array(refmap).each_with_index do |refspec, i|
|
||||
refspec = REFMAPS[refspec] || refspec
|
||||
|
||||
# We need multiple `fetch` entries, but Rugged only allows replacing a config, not adding to it.
|
||||
# To make sure we start from scratch, we set the first using rugged, and use `git` for any others
|
||||
if i == 0
|
||||
rugged.config["remote.#{remote_name}.fetch"] = refspec
|
||||
else
|
||||
run_git(%W[config --add remote.#{remote_name}.fetch #{refspec}])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def remote_tags(remote)
|
||||
# Each line has this format: "dc872e9fa6963f8f03da6c8f6f264d0845d6b092\trefs/tags/v1.10.0\n"
|
||||
# We want to convert it to: [{ 'v1.10.0' => 'dc872e9fa6963f8f03da6c8f6f264d0845d6b092' }, ...]
|
||||
|
@ -72,6 +58,20 @@ module Gitlab
|
|||
|
||||
private
|
||||
|
||||
def set_remote_refmap(remote_name, refmap)
|
||||
Array(refmap).each_with_index do |refspec, i|
|
||||
refspec = REFMAPS[refspec] || refspec
|
||||
|
||||
# We need multiple `fetch` entries, but Rugged only allows replacing a config, not adding to it.
|
||||
# To make sure we start from scratch, we set the first using rugged, and use `git` for any others
|
||||
if i == 0
|
||||
rugged.config["remote.#{remote_name}.fetch"] = refspec
|
||||
else
|
||||
run_git(%W[config --add remote.#{remote_name}.fetch #{refspec}])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def list_remote_tags(remote)
|
||||
tag_list, exit_code, error = nil
|
||||
cmd = %W(#{Gitlab.config.git.bin_path} --git-dir=#{path} ls-remote --tags #{remote})
|
||||
|
|
Loading…
Reference in New Issue