forked from jelmer/dulwich
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclone.py
34 lines (26 loc) · 867 Bytes
/
clone.py
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()