diff options
author | Felipe Contreras <felipe.contreras@gmail.com> | 2013-05-24 21:24:22 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-05-28 07:43:18 -0700 |
commit | 2ae078e8476639b0dcd559d9b797771e6ffd97ff (patch) | |
tree | ec9db5e7b8c8d458e330d5a2bd042f91cb7ce13a | |
parent | remote-bzr: simplify get_remote_branch() (diff) | |
download | tgif-2ae078e8476639b0dcd559d9b797771e6ffd97ff.tar.xz |
remote-bzr: delay cloning/pulling
Until the branch is actually going to be used.
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | contrib/remote-helpers/git-remote-bzr | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/contrib/remote-helpers/git-remote-bzr b/contrib/remote-helpers/git-remote-bzr index 5c4201ac31..202a4f7f44 100755 --- a/contrib/remote-helpers/git-remote-bzr +++ b/contrib/remote-helpers/git-remote-bzr @@ -278,7 +278,7 @@ def export_branch(repo, name): ref = '%s/heads/%s' % (prefix, name) tip = marks.get_tip(name) - branch = bzrlib.branch.Branch.open(branches[name]) + branch = get_remote_branch(name) repo = branch.repository branch.lock_read() @@ -590,7 +590,7 @@ def parse_commit(parser): if ref.startswith('refs/heads/'): name = ref[len('refs/heads/'):] - branch = bzrlib.branch.Branch.open(branches[name]) + branch = get_remote_branch(name) else: die('unknown ref') @@ -692,7 +692,7 @@ def do_export(parser): for ref, revid in parsed_refs.iteritems(): if ref.startswith('refs/heads/'): name = ref[len('refs/heads/'):] - branch = bzrlib.branch.Branch.open(branches[name]) + branch = get_remote_branch(name) branch.generate_revision_history(revid, marks.get_tip(name)) if name in peers: @@ -749,7 +749,7 @@ def do_list(parser): master_branch = name print "? refs/heads/%s" % name - branch = bzrlib.branch.Branch.open(branches[master_branch]) + branch = get_remote_branch(master_branch) branch.lock_read() for tag, revid in branch.tags.get_tag_dict().items(): try: @@ -771,8 +771,12 @@ def clone(path, remote_branch): repo.fetch(remote_branch.repository) return remote_branch.sprout(bdir, repository=repo) -def get_remote_branch(remote_branch, name): - global dirname, peers +def get_remote_branch(name): + global dirname, branches + + remote_branch = bzrlib.branch.Branch.open(branches[name]) + if isinstance(remote_branch.user_transport, bzrlib.transport.local.LocalTransport): + return remote_branch branch_path = os.path.join(dirname, 'clone', name) @@ -857,13 +861,10 @@ def get_repo(url, alias): if not is_local: peers[name] = remote_branch.base - branch = get_remote_branch(remote_branch, name) - else: - branch = remote_branch - branches[name] = branch.base + branches[name] = remote_branch.base - return branch.repository + return remote_branch.repository else: # repository @@ -875,11 +876,8 @@ def get_repo(url, alias): if not is_local: peers[name] = remote_branch.base - branch = get_remote_branch(remote_branch, name) - else: - branch = remote_branch - branches[name] = branch.base + branches[name] = remote_branch.base return repo |