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 <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
850dd25c9a
commit
248663c4ff
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user