Skip to content
Snippets Groups Projects
Commit 95009cef authored by Alejandro Rodríguez's avatar Alejandro Rodríguez
Browse files

Unify mirror addition operations to prepare for Gitaly migration

parent 885a4da2
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
@@ -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)
Loading
Loading
Loading
Loading
@@ -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' }, ...]
Loading
Loading
@@ -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
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment