remote-bzr: add custom method to find branches
The official method is incredibly inefficient and slow. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
3f6e7c0af1
commit
850dd25c9a
@ -756,6 +756,25 @@ def get_remote_branch(origin, remote_branch, name):
|
|||||||
|
|
||||||
return branch
|
return branch
|
||||||
|
|
||||||
|
def find_branches(repo):
|
||||||
|
transport = repo.user_transport
|
||||||
|
|
||||||
|
for fn in transport.iter_files_recursive():
|
||||||
|
if not fn.endswith('.bzr/branch-format'):
|
||||||
|
continue
|
||||||
|
|
||||||
|
name = subdir = fn[:-len('/.bzr/branch-format')]
|
||||||
|
name = name if name != '' else 'master'
|
||||||
|
name = name.replace('/', '+')
|
||||||
|
|
||||||
|
try:
|
||||||
|
cur = transport.clone(subdir)
|
||||||
|
branch = bzrlib.branch.Branch.open_from_transport(cur)
|
||||||
|
except bzrlib.errors.NotBranchError:
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
yield name, branch
|
||||||
|
|
||||||
def get_repo(url, alias):
|
def get_repo(url, alias):
|
||||||
global dirname, peer, branches
|
global dirname, peer, branches
|
||||||
|
|
||||||
@ -796,11 +815,7 @@ def get_repo(url, alias):
|
|||||||
else:
|
else:
|
||||||
# repository
|
# repository
|
||||||
|
|
||||||
for branch in repo.find_branches():
|
for name, branch in find_branches(repo):
|
||||||
|
|
||||||
name = repo.user_transport.relpath(branch.base)
|
|
||||||
name = name if name != '' else 'master'
|
|
||||||
name = name.replace('/', '+')
|
|
||||||
|
|
||||||
if not is_local:
|
if not is_local:
|
||||||
peers[name] = branch
|
peers[name] = branch
|
||||||
|
Loading…
Reference in New Issue
Block a user