Rev 316: Try to reduce memory usage further. in http://people.samba.org/bzr/jelmer/bzr-svn/bzr.dev
Jelmer Vernooij
jelmer at samba.org
Wed Dec 27 04:22:27 GMT 2006
------------------------------------------------------------
revno: 316
revision-id: jelmer at samba.org-20061227042119-q98xp1i0u725mj4z
parent: jelmer at samba.org-20061227034807-w9dva17y9ao13c2z
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: main
timestamp: Wed 2006-12-27 05:21:19 +0100
message:
Try to reduce memory usage further.
Move mutters about commands sent to server to single place.
modified:
fetch.py fetch.py-20060625004942-x2lfaib8ra707a8p-1
transport.py transport.py-20060406231150-b3472d06b3a0818d
tree.py tree.py-20060624222557-dudlwqcmkf22lt2s-1
=== modified file 'fetch.py'
--- a/fetch.py 2006-12-27 03:48:07 +0000
+++ b/fetch.py 2006-12-27 04:21:19 +0000
@@ -44,7 +44,7 @@
class RevisionBuildEditor(svn.delta.Editor):
def __init__(self, source, target, branch_path, revnum, prev_inventory, revid, svn_revprops, id_map, parent_branch, parent_id_map):
self.branch_path = branch_path
- self.inventory = copy(prev_inventory)
+ self.inventory = prev_inventory
self.revid = revid
self.revnum = revnum
self.id_map = id_map
@@ -61,6 +61,8 @@
self._revprops = {}
self._svn_revprops = svn_revprops
+ self.pool = Pool()
+
def _get_revision(self, revid):
if self._parent_ids is None:
self._parent_ids = ""
@@ -249,6 +251,7 @@
bzrlib.xml5.serializer_v5.write_inventory_to_string(
self.inventory))
self.target.add_revision(self.revid, rev, self.inventory)
+ self.pool.destroy()
def abort_edit(self):
pass
@@ -258,7 +261,7 @@
assert (base_checksum is None or base_checksum == actual_checksum,
"base checksum mismatch: %r != %r" % (base_checksum, actual_checksum))
self.file_stream = StringIO()
- return apply_txdelta_handler(StringIO(self.file_data), self.file_stream)
+ return apply_txdelta_handler(StringIO(self.file_data), self.file_stream, self.pool)
class InterSvnRepository(InterRepository):
@@ -350,14 +353,10 @@
transport.reparent("%s/%s" % (repos_root, parent_branch))
if parent_branch != branch:
switch_url = "%s/%s" % (repos_root, branch)
- mutter('svn switch %r:%r -> %r:%r' %
- (parent_branch, parent_revnum, switch_url, revnum))
reporter, reporter_baton = transport.do_switch(
revnum, "", True,
switch_url, edit, edit_baton, pool)
else:
- mutter('svn update -r %r:%r %r' %
- (parent_revnum, revnum, branch))
reporter, reporter_baton = transport.do_update(
revnum, "", True, edit, edit_baton, pool)
=== modified file 'transport.py'
--- a/transport.py 2006-12-26 23:37:35 +0000
+++ b/transport.py 2006-12-27 04:21:19 +0000
@@ -156,9 +156,9 @@
return svn.ra.get_latest_revnum(self._ra)
@need_lock
- def do_switch(self, switch_rev, switch_target, *args, **kwargs):
- mutter('svn switch -r %d %r' % (switch_rev, switch_target))
- return svn.ra.do_switch(self._ra, switch_rev, switch_target, *args, **kwargs)
+ def do_switch(self, switch_rev, switch_target, recurse, switch_url, *args, **kwargs):
+ mutter('svn switch -r %d %r -> %r' % (switch_rev, switch_target, switch_url))
+ return svn.ra.do_switch(self._ra, switch_rev, switch_target, recurse, switch_url, *args, **kwargs)
@need_lock
def get_log(self, path, from_revnum, to_revnum, *args, **kwargs):
@@ -224,8 +224,9 @@
raise
@need_lock
- def do_update(self, *args, **kwargs):
- return svn.ra.do_update(self._ra, *args, **kwargs)
+ def do_update(self, revnum, path, *args, **kwargs):
+ mutter('svn update -r %r %r' % (revnum, path))
+ return svn.ra.do_update(self._ra, revnum, path, *args, **kwargs)
@need_lock
def get_commit_editor(self, *args, **kwargs):
=== modified file 'tree.py'
--- a/tree.py 2006-12-23 19:54:16 +0000
+++ b/tree.py 2006-12-27 04:21:19 +0000
@@ -34,16 +34,14 @@
import svn.core, svn.wc, svn.delta, svn.ra
from svn.core import SubversionException, Pool
-_global_pool = Pool()
-
-def apply_txdelta_handler(src_stream, target_stream):
+def apply_txdelta_handler(src_stream, target_stream, pool):
assert hasattr(src_stream, 'read')
assert hasattr(target_stream, 'write')
ret = svn.delta.svn_txdelta_apply(
src_stream,
target_stream,
None,
- _global_pool)
+ pool)
def wrapper(window):
svn.delta.invoke_txdelta_window_handler(
@@ -55,6 +53,7 @@
def __init__(self, repository, revision_id, inventory=None):
self._repository = repository
self._revision_id = revision_id
+ pool = Pool()
if revision_id == NULL_REVISION:
self._inventory = Inventory(ROOT_ID)
self._inventory.revision_id = NULL_REVISION
@@ -63,32 +62,34 @@
self._inventory = Inventory(ROOT_ID)
self._inventory.revision_id = revision_id
self.id_map = repository.get_fileid_map(self.revnum, self.branch_path)
- self.editor = TreeBuildEditor(self)
+ self.editor = TreeBuildEditor(self, pool)
self.file_data = {}
- editor, baton = svn.delta.make_editor(self.editor)
+ editor, baton = svn.delta.make_editor(self.editor, pool)
root_repos = repository.transport.get_repos_root()
- mutter('svn checkout -r %r %r' % (self.revnum, self.branch_path))
reporter, reporter_baton = repository.transport.do_switch(
self.revnum, "", True,
- os.path.join(root_repos, self.branch_path), editor, baton)
-
- svn.ra.reporter2_invoke_set_path(reporter, reporter_baton, "", 0, True, None)
-
- svn.ra.reporter2_invoke_finish_report(reporter, reporter_baton)
+ os.path.join(root_repos, self.branch_path), editor, baton, pool)
+
+ svn.ra.reporter2_invoke_set_path(reporter, reporter_baton, "", 0, True, None, pool)
+
+ svn.ra.reporter2_invoke_finish_report(reporter, reporter_baton, pool)
+
+ pool.destroy()
def get_file_lines(self, file_id):
return osutils.split_lines(self.file_data[file_id])
class TreeBuildEditor(svn.delta.Editor):
- def __init__(self, tree):
+ def __init__(self, tree, pool):
self.tree = tree
self.repository = tree._repository
self.last_revnum = {}
self.dir_revnum = {}
self.dir_ignores = {}
+ self.pool = pool
def set_target_revision(self, revnum):
self.revnum = revnum
@@ -201,7 +202,7 @@
def apply_textdelta(self, file_id, base_checksum):
self.file_stream = StringIO()
- return apply_txdelta_handler(StringIO(""), self.file_stream)
+ return apply_txdelta_handler(StringIO(""), self.file_stream, self.pool)
class SvnBasisTree(SvnRevisionTree):
More information about the bazaar-commits
mailing list