diff options
author | Felipe Contreras <felipe.contreras@gmail.com> | 2013-05-24 21:24:19 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-05-28 07:43:18 -0700 |
commit | 99a4fdb950b214de3a0ad0ac255f6a2491f975d4 (patch) | |
tree | eea8829c6931965e911d7b64c5c94fb2d3366890 /contrib/remote-helpers | |
parent | edca4152560522a431a51fc0a06147fc680b5b18 (diff) | |
download | git-99a4fdb950b214de3a0ad0ac255f6a2491f975d4.tar.gz git-99a4fdb950b214de3a0ad0ac255f6a2491f975d4.tar.xz |
remote-bzr: recover from failed clones
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'contrib/remote-helpers')
-rwxr-xr-x | contrib/remote-helpers/git-remote-bzr | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/contrib/remote-helpers/git-remote-bzr b/contrib/remote-helpers/git-remote-bzr index 10300c63d..8a4df51fa 100755 --- a/contrib/remote-helpers/git-remote-bzr +++ b/contrib/remote-helpers/git-remote-bzr @@ -769,22 +769,24 @@ def get_remote_branch(origin, remote_branch, name): global dirname, peers branch_path = os.path.join(dirname, 'clone', name) - if os.path.exists(branch_path): - # pull + + try: d = bzrlib.bzrdir.BzrDir.open(branch_path) branch = d.open_branch() - try: - branch.pull(remote_branch, [], None, False) - except bzrlib.errors.DivergedBranches: - # use remote branch for now - return remote_branch - else: + except bzrlib.errors.NotBranchError: # clone d = origin.sprout(branch_path, None, hardlink=True, create_tree_if_local=False, force_new_repo=False, source_branch=remote_branch) branch = d.open_branch() + else: + # pull + try: + branch.pull(remote_branch, [], None, False) + except bzrlib.errors.DivergedBranches: + # use remote branch for now + return remote_branch return branch |