From 248663c4ff931f1f42fb7f8233d0ae23f80c7835 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Tue, 30 Apr 2013 20:10:06 -0500 Subject: [PATCH] remote-bzr: add option to specify branches We might not want all the branches. And branch handling in bazaar is rather tricky, so it's safer to simply specify them. Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- contrib/remote-helpers/git-remote-bzr | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/contrib/remote-helpers/git-remote-bzr b/contrib/remote-helpers/git-remote-bzr index 11f24152bf..d284afc0d3 100755 --- a/contrib/remote-helpers/git-remote-bzr +++ b/contrib/remote-helpers/git-remote-bzr @@ -13,6 +13,9 @@ # or # % git clone bzr::lp:myrepo # +# If you want to specify which branches you want track (per repo): +# git config remote-bzr.branches 'trunk, devel, test' +# import sys @@ -51,6 +54,12 @@ def warn(msg, *args): def gittz(tz): return '%+03d%02d' % (tz / 3600, tz % 3600 / 60) +def get_config(config): + cmd = ['git', 'config', '--get', config] + process = subprocess.Popen(cmd, stdout=subprocess.PIPE) + output, _ = process.communicate() + return output + class Marks: def __init__(self, path): @@ -756,7 +765,7 @@ def get_remote_branch(origin, remote_branch, name): return branch -def find_branches(repo): +def find_branches(repo, wanted): transport = repo.user_transport for fn in transport.iter_files_recursive(): @@ -767,6 +776,9 @@ def find_branches(repo): name = name if name != '' else 'master' name = name.replace('/', '+') + if wanted and not name in wanted: + continue + try: cur = transport.clone(subdir) branch = bzrlib.branch.Branch.open_from_transport(cur) @@ -815,7 +827,11 @@ def get_repo(url, alias): else: # repository - for name, branch in find_branches(repo): + wanted = get_config('remote-bzr.branches').rstrip().split(', ') + # stupid python + wanted = [e for e in wanted if e] + + for name, branch in find_branches(repo, wanted): if not is_local: peers[name] = branch -- 2.11.4.GIT