summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Contreras <felipe.contreras@gmail.com>2013-04-30 20:10:10 -0500
committerJunio C Hamano <gitster@pobox.com>2013-04-30 22:06:47 -0700
commitd421c02b4144df9b0448e321930ee6a604cdd3fc (patch)
tree86df88b0a975eb25b38de2b2eedf4eadbea8b436
parent747c9a377fb73aa30f6b4dca958e3b121f88bb66 (diff)
downloadgit-d421c02b4144df9b0448e321930ee6a604cdd3fc.tar.gz
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>
-rwxr-xr-xcontrib/remote-helpers/git-remote-bzr28
1 files changed, 16 insertions, 12 deletions
diff --git a/contrib/remote-helpers/git-remote-bzr b/contrib/remote-helpers/git-remote-bzr
index b2d67f7f37..161f83193c 100755
--- a/contrib/remote-helpers/git-remote-bzr
+++ b/contrib/remote-helpers/git-remote-bzr
@@ -277,7 +277,7 @@ def export_branch(repo, name):
ref = '%s/heads/%s' % (prefix, name)
tip = marks.get_tip(name)
- branch = branches[name]
+ branch = bzrlib.branch.Branch.open(branches[name])
repo = branch.repository
branch.lock_read()
@@ -582,7 +582,7 @@ def parse_commit(parser):
if ref.startswith('refs/heads/'):
name = ref[len('refs/heads/'):]
- branch = branches[name]
+ branch = bzrlib.branch.Branch.open(branches[name])
else:
die('unknown ref')
@@ -683,7 +683,7 @@ def do_export(parser):
for ref, revid in parsed_refs.iteritems():
name = ref[len('refs/heads/'):]
- branch = branches[name]
+ branch = bzrlib.branch.Branch.open(branches[name])
branch.generate_revision_history(revid, marks.get_tip(name))
if name in peers:
@@ -733,7 +733,7 @@ def do_list(parser):
master_branch = name
print "? refs/heads/%s" % name
- branch = branches[master_branch]
+ branch = bzrlib.branch.Branch.open(branches[master_branch])
branch.lock_read()
for tag, revid in branch.tags.get_tag_dict().items():
try:
@@ -822,13 +822,15 @@ def get_repo(url, alias):
# branch
name = 'master'
- branch = origin.open_branch()
+ remote_branch = origin.open_branch()
if not is_local:
- peers[name] = branch.base
- branches[name] = get_remote_branch(origin, branch, name)
+ peers[name] = remote_branch.base
+ branch = get_remote_branch(origin, remote_branch, name)
else:
- branches[name] = branch
+ branch = remote_branch
+
+ branches[name] = branch.base
return branch.repository
else:
@@ -838,13 +840,15 @@ def get_repo(url, alias):
# stupid python
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:
- peers[name] = branch.base
- branches[name] = get_remote_branch(origin, branch, name)
+ peers[name] = remote_branch.base
+ branch = get_remote_branch(origin, remote_branch, name)
else:
- branches[name] = branch
+ branch = remote_branch
+
+ branches[name] = branch.base
return repo