1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#!/usr/bin/python
# This trivial script demonstrates how to clone a remote repository.
#
# Example usage:
# python examples/clone.py git://github.com/jelmer/dulwich dulwich-clone
import sys
from getopt import getopt
from dulwich.repo import Repo
from dulwich.client import get_transport_and_path
opts, args = getopt(sys.argv, "", [])
opts = dict(opts)
if len(args) < 2:
print("usage: %s host:path path" % (args[0], ))
sys.exit(1)
# Connect to the remote repository
client, host_path = get_transport_and_path(args[1])
path = args[2]
# Create the local repository
r = Repo.init(path, mkdir=True)
# Fetch the remote objects
remote_refs = client.fetch(host_path, r,
determine_wants=r.object_store.determine_wants_all,
progress=sys.stdout.write)
# Update the local head to point at the right object
r["HEAD"] = remote_refs["HEAD"]
r._build_tree()
|