#!/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()