summaryrefslogtreecommitdiff
path: root/app/models/concerns/repository_mirroring.rb
blob: fed336c29d6dd8f61717dff0051f115f3af9714c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module RepositoryMirroring
  def set_remote_as_mirror(name)
    config = raw_repository.rugged.config

    # This is used to define repository as equivalent as "git clone --mirror"
    config["remote.#{name}.fetch"] = 'refs/*:refs/*'
    config["remote.#{name}.mirror"] = true
    config["remote.#{name}.prune"] = true
  end

  def fetch_mirror(remote, url)
    add_remote(remote, url)
    set_remote_as_mirror(remote)
    fetch_remote(remote, forced: true)
    remove_remote(remote)
  end
end