File: clone.py

package info (click to toggle)
dulwich 0.9.7-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 2,392 kB
  • ctags: 3,088
  • sloc: python: 18,874; ansic: 835; makefile: 153; sh: 2
file content (34 lines) | stat: -rw-r--r-- 867 bytes parent folder | download
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()