Carlos Martín Nieto 5b50579790 Add a recipe for git clone --mirror
It's not necessarily obvious how to perform a mirror, so add a recipe
which tells what git does as well as provide example code of how to
perform the same steps in pygit2.
2015-04-28 19:53:39 +02:00

1.0 KiB

git-clone --mirror

git provides an argument to set up the repository as a mirror, which involves setting the refspec to one which copies all refs and a mirror option for push in the remote.

def init_remote(repo, name, url):
    # Create the remote with a mirroring url
    remote = repo.remotes.create(name, url, "+refs/*:refs/*")
    # And set the configuration option to true for the push command
    mirror_var = "remote.{}.mirror".format(name)
    repo.config[mirror_var] = True
    # Return the remote, which pygit2 will use to perform the clone
    return remote

print("Cloning pygit2 as mirror")
pygit2.clone_repository("https://github.com/libgit2/pygit2", "pygit2.git", bare=True,
                        remote=init_remote)