remote-bzr: recover from failed clones

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Felipe Contreras 2013-05-24 21:24:19 -05:00 committed by Junio C Hamano
parent edca415256
commit 99a4fdb950

View File

@ -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