Browse Source

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>
maint
Felipe Contreras 12 years ago committed by Junio C Hamano
parent
commit
850dd25c9a
  1. 25
      contrib/remote-helpers/git-remote-bzr

25
contrib/remote-helpers/git-remote-bzr

@ -756,6 +756,25 @@ def get_remote_branch(origin, remote_branch, name): @@ -756,6 +756,25 @@ def get_remote_branch(origin, remote_branch, name):

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):
global dirname, peer, branches

@ -796,11 +815,7 @@ def get_repo(url, alias): @@ -796,11 +815,7 @@ def get_repo(url, alias):
else:
# repository

for branch in repo.find_branches():

name = repo.user_transport.relpath(branch.base)
name = name if name != '' else 'master'
name = name.replace('/', '+')
for name, branch in find_branches(repo):

if not is_local:
peers[name] = branch

Loading…
Cancel
Save