From 99a4fdb950b214de3a0ad0ac255f6a2491f975d4 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Fri, 24 May 2013 21:24:19 -0500 Subject: [PATCH] remote-bzr: recover from failed clones Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- contrib/remote-helpers/git-remote-bzr | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/contrib/remote-helpers/git-remote-bzr b/contrib/remote-helpers/git-remote-bzr index 10300c63d1..8a4df51fad 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 -- 2.32.0.93.g670b81a890