remote-bzr: access branches only when needed
Bazaar doesn't seem to be tested for multiple usage of branches, so resources seem to be leaked all over. Let's try to minimize this by accessing the Branch objects only when needed. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
747c9a377f
commit
d421c02b41
@ -277,7 +277,7 @@ def export_branch(repo, name):
|
|||||||
ref = '%s/heads/%s' % (prefix, name)
|
ref = '%s/heads/%s' % (prefix, name)
|
||||||
tip = marks.get_tip(name)
|
tip = marks.get_tip(name)
|
||||||
|
|
||||||
branch = branches[name]
|
branch = bzrlib.branch.Branch.open(branches[name])
|
||||||
repo = branch.repository
|
repo = branch.repository
|
||||||
|
|
||||||
branch.lock_read()
|
branch.lock_read()
|
||||||
@ -582,7 +582,7 @@ def parse_commit(parser):
|
|||||||
|
|
||||||
if ref.startswith('refs/heads/'):
|
if ref.startswith('refs/heads/'):
|
||||||
name = ref[len('refs/heads/'):]
|
name = ref[len('refs/heads/'):]
|
||||||
branch = branches[name]
|
branch = bzrlib.branch.Branch.open(branches[name])
|
||||||
else:
|
else:
|
||||||
die('unknown ref')
|
die('unknown ref')
|
||||||
|
|
||||||
@ -683,7 +683,7 @@ def do_export(parser):
|
|||||||
|
|
||||||
for ref, revid in parsed_refs.iteritems():
|
for ref, revid in parsed_refs.iteritems():
|
||||||
name = ref[len('refs/heads/'):]
|
name = ref[len('refs/heads/'):]
|
||||||
branch = branches[name]
|
branch = bzrlib.branch.Branch.open(branches[name])
|
||||||
branch.generate_revision_history(revid, marks.get_tip(name))
|
branch.generate_revision_history(revid, marks.get_tip(name))
|
||||||
|
|
||||||
if name in peers:
|
if name in peers:
|
||||||
@ -733,7 +733,7 @@ def do_list(parser):
|
|||||||
master_branch = name
|
master_branch = name
|
||||||
print "? refs/heads/%s" % name
|
print "? refs/heads/%s" % name
|
||||||
|
|
||||||
branch = branches[master_branch]
|
branch = bzrlib.branch.Branch.open(branches[master_branch])
|
||||||
branch.lock_read()
|
branch.lock_read()
|
||||||
for tag, revid in branch.tags.get_tag_dict().items():
|
for tag, revid in branch.tags.get_tag_dict().items():
|
||||||
try:
|
try:
|
||||||
@ -822,13 +822,15 @@ def get_repo(url, alias):
|
|||||||
# branch
|
# branch
|
||||||
|
|
||||||
name = 'master'
|
name = 'master'
|
||||||
branch = origin.open_branch()
|
remote_branch = origin.open_branch()
|
||||||
|
|
||||||
if not is_local:
|
if not is_local:
|
||||||
peers[name] = branch.base
|
peers[name] = remote_branch.base
|
||||||
branches[name] = get_remote_branch(origin, branch, name)
|
branch = get_remote_branch(origin, remote_branch, name)
|
||||||
else:
|
else:
|
||||||
branches[name] = branch
|
branch = remote_branch
|
||||||
|
|
||||||
|
branches[name] = branch.base
|
||||||
|
|
||||||
return branch.repository
|
return branch.repository
|
||||||
else:
|
else:
|
||||||
@ -838,13 +840,15 @@ def get_repo(url, alias):
|
|||||||
# stupid python
|
# stupid python
|
||||||
wanted = [e for e in wanted if e]
|
wanted = [e for e in wanted if e]
|
||||||
|
|
||||||
for name, branch in find_branches(repo, wanted):
|
for name, remote_branch in find_branches(repo, wanted):
|
||||||
|
|
||||||
if not is_local:
|
if not is_local:
|
||||||
peers[name] = branch.base
|
peers[name] = remote_branch.base
|
||||||
branches[name] = get_remote_branch(origin, branch, name)
|
branch = get_remote_branch(origin, remote_branch, name)
|
||||||
else:
|
else:
|
||||||
branches[name] = branch
|
branch = remote_branch
|
||||||
|
|
||||||
|
branches[name] = branch.base
|
||||||
|
|
||||||
return repo
|
return repo
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user