Rev 1235: Remove memory Pool usage in bzr-svn. in http://people.samba.org/bzr/jelmer/bzr-svn/0.4/

Jelmer Vernooij jelmer at samba.org
Tue Jun 17 21:55:24 BST 2008


At http://people.samba.org/bzr/jelmer/bzr-svn/0.4/

------------------------------------------------------------
revno: 1235
revision-id: jelmer at samba.org-20080617205523-hqus05shap15g9yc
parent: jelmer at samba.org-20080617202354-kjwsfvx2j486yrep
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Tue 2008-06-17 22:55:23 +0200
message:
  Remove memory Pool usage in bzr-svn.
modified:
  commit.py                      commit.py-20060607190346-qvq128wgfubhhgm2-1
  fetch.py                       fetch.py-20060625004942-x2lfaib8ra707a8p-1
  logwalker.py                   logwalker.py-20060621215743-c13fhfnyzh1xzwh2-1
  ra.py                          ra.py-20080615005305-t5221niknu8rm6bt-1
  transport.py                   transport.py-20060406231150-b3472d06b3a0818d
  tree.py                        tree.py-20060624222557-dudlwqcmkf22lt2s-1
  workingtree.py                 workingtree.py-20060306120941-b083cb0fdd4a69de
=== modified file 'commit.py'
--- a/commit.py	2008-06-15 02:48:51 +0000
+++ b/commit.py	2008-06-17 20:55:23 +0000
@@ -26,8 +26,6 @@
 
 from cStringIO import StringIO
 
-from svn.core import Pool
-
 from bzrlib.plugins.svn import core, properties
 from bzrlib.plugins.svn.core import SubversionException, time_to_cstring
 from bzrlib.plugins.svn.errors import ChangesRootLHSHistory, MissingPrefix, RevpropChangeFailed, ERR_FS_TXN_OUT_OF_DATE, ERR_REPOS_DISABLED_FEATURE
@@ -108,7 +106,6 @@
         super(SvnCommitBuilder, self).__init__(repository, parents, 
             config, timestamp, timezone, committer, revprops, revision_id)
         self.branch = branch
-        self.pool = Pool()
 
         # Gather information about revision on top of which the commit is 
         # happening
@@ -196,8 +193,8 @@
         :param baton: Baton under which the file is known to the editor.
         """
         assert baton is not None
-        (txdelta, txbaton) = self.editor.apply_textdelta(baton, None, self.pool)
-        digest = txdelta_send_stream(StringIO(contents), txdelta, txbaton, self.pool)
+        (txdelta, txbaton) = self.editor.apply_textdelta(baton, None)
+        digest = txdelta_send_stream(StringIO(contents), txdelta, txbaton)
         if 'validate' in debug.debug_flags:
             from fetch import md5_strings
             assert digest == md5_strings(contents)
@@ -227,7 +224,7 @@
                     self.mutter('removing %r(%r)', (child_name, child_ie.file_id))
                     self.editor.delete_entry(
                         urlutils.join(self.branch.get_branch_path(), path, child_name), 
-                        self.base_revnum, baton, self.pool)
+                        self.base_revnum, baton)
 
         # Loop over file children of file_id in self.new_inventory
         for child_name in self.new_inventory[file_id].children:
@@ -244,7 +241,7 @@
             if not child_ie.file_id in self.old_inv:
                 self.mutter('adding %s %r', child_ie.kind, new_child_path)
                 child_baton = self.editor.add_file(
-                    full_new_child_path, baton, None, -1, self.pool)
+                    full_new_child_path, baton, None, -1)
 
 
             # copy if they existed at different location
@@ -256,14 +253,14 @@
                 child_baton = self.editor.add_file(
                         full_new_child_path, baton,
                     urlutils.join(self.repository.transport.svn_url, self.base_path, self.old_inv.id2path(child_ie.file_id)),
-                    self.base_revnum, self.pool)
+                    self.base_revnum)
 
             # open if they existed at the same location
             elif child_ie.revision is None:
                 self.mutter('open %s %r', child_ie.kind, new_child_path)
 
                 child_baton = self.editor.open_file(
-                        full_new_child_path, baton, self.base_revnum, self.pool)
+                        full_new_child_path, baton, self.base_revnum)
 
             else:
                 # Old copy of the file was retained. No need to send changes
@@ -284,7 +281,7 @@
                     else:
                         value = None
                     self.editor.change_file_prop(child_baton, 
-                            properties.PROP_EXECUTABLE, value, self.pool)
+                            properties.PROP_EXECUTABLE, value)
 
                 if old_special != (child_ie.kind == 'symlink'):
                     if child_ie.kind == 'symlink':
@@ -293,7 +290,7 @@
                         value = None
 
                     self.editor.change_file_prop(child_baton, 
-                            properties.PROP_SPECIAL, value, self.pool)
+                            properties.PROP_SPECIAL, value)
 
             # handle the file
             if child_ie.file_id in self.modified_files:
@@ -301,7 +298,7 @@
                     self.modified_files[child_ie.file_id], child_baton)
 
             if child_baton is not None:
-                self.editor.close_file(child_baton, None, self.pool)
+                self.editor.close_file(child_baton, None)
 
         # Loop over subdirectories of file_id in self.new_inventory
         for child_name in self.new_inventory[file_id].children:
@@ -315,7 +312,7 @@
                 self.mutter('adding dir %r', child_ie.name)
                 child_baton = self.editor.add_directory(
                     urlutils.join(self.branch.get_branch_path(), 
-                                  new_child_path), baton, None, -1, self.pool)
+                                  new_child_path), baton, None, -1)
 
             # copy if they existed at different location
             elif self.old_inv.id2path(child_ie.file_id) != new_child_path:
@@ -324,7 +321,7 @@
                 child_baton = self.editor.add_directory(
                     urlutils.join(self.branch.get_branch_path(), new_child_path),
                     baton, 
-                    urlutils.join(self.repository.transport.svn_url, self.base_path, old_child_path), self.base_revnum, self.pool)
+                    urlutils.join(self.repository.transport.svn_url, self.base_path, old_child_path), self.base_revnum)
 
             # open if they existed at the same location and 
             # the directory was touched
@@ -333,7 +330,7 @@
 
                 child_baton = self.editor.open_directory(
                         urlutils.join(self.branch.get_branch_path(), new_child_path), 
-                        baton, self.base_revnum, self.pool)
+                        baton, self.base_revnum)
             else:
                 assert child_ie.file_id not in self.modified_dirs
                 continue
@@ -342,7 +339,7 @@
             if child_ie.file_id in self.modified_dirs:
                 self._dir_process(new_child_path, child_ie.file_id, child_baton)
 
-            self.editor.close_directory(child_baton, self.pool)
+            self.editor.close_directory(child_baton)
 
     def open_branch_batons(self, root, elements, existing_elements, 
                            base_path, base_rev, replace_existing):
@@ -364,7 +361,7 @@
         for i in range(0, len(elements)-1):
             # Does directory already exist?
             ret.append(self.editor.open_directory(
-                "/".join(existing_elements[0:i+1]), ret[-1], -1, self.pool))
+                "/".join(existing_elements[0:i+1]), ret[-1], -1))
 
         if (len(existing_elements) != len(elements) and
             len(existing_elements)+1 != len(elements)):
@@ -378,7 +375,7 @@
         if (len(existing_elements) == len(elements) and 
             not replace_existing):
             ret.append(self.editor.open_directory(
-                "/".join(elements), ret[-1], base_rev, self.pool))
+                "/".join(elements), ret[-1], base_rev))
         else: # Branch has to be created
             # Already exists, old copy needs to be removed
             name = "/".join(elements)
@@ -393,7 +390,7 @@
                 base_url = None
             self.mutter("adding branch dir %r", name)
             ret.append(self.editor.add_directory(
-                name, ret[-1], base_url, base_rev, self.pool))
+                name, ret[-1], base_url, base_rev))
 
         return ret
 
@@ -496,12 +493,11 @@
                     warning("Setting property %r with invalid characters in name", prop)
                 if value is not None:
                     value = value.encode('utf-8')
-                self.editor.change_dir_prop(branch_batons[-1], prop, value, 
-                                            self.pool)
+                self.editor.change_dir_prop(branch_batons[-1], prop, value)
                 self.mutter("Setting root file property %r -> %r", prop, value)
 
             for baton in reversed(branch_batons):
-                self.editor.close_directory(baton, self.pool)
+                self.editor.close_directory(baton)
 
             self.editor.close()
         finally:

=== modified file 'fetch.py'
--- a/fetch.py	2008-06-15 02:11:24 +0000
+++ b/fetch.py	2008-06-17 20:55:23 +0000
@@ -25,7 +25,6 @@
 from cStringIO import StringIO
 import md5
 
-from svn.core import Pool
 import svn.delta
 
 from bzrlib.plugins.svn import properties
@@ -103,7 +102,6 @@
         self.dir_baserev = {}
         self._revinfo = None
         self._premature_deletes = set()
-        self.pool = Pool()
         self.old_inventory = prev_inventory
         self.inventory = prev_inventory.copy()
         self._start_revision()
@@ -385,7 +383,6 @@
     def close_edit(self):
         assert len(self._premature_deletes) == 0
         self._finish_commit()
-        self.pool.destroy()
 
     def apply_textdelta(self, file_id, base_checksum):
         actual_checksum = md5.new(self.file_data).hexdigest(),
@@ -394,7 +391,7 @@
                                                   actual_checksum))
         self.file_stream = StringIO()
         return apply_txdelta_handler(StringIO(self.file_data), 
-                                     self.file_stream, self.pool)
+                                     self.file_stream)
 
     def _store_file(self, file_id, lines, parents):
         raise NotImplementedError(self._store_file)
@@ -645,7 +642,7 @@
                                 # Report status of existing paths
                                 reporter.set_path("", editor.revnum, True, None)
                             except:
-                                reporter.abort_report()
+                                reporter.abort()
                                 raise
                         else:
                             (parent_branch, parent_revnum, mapping) = \
@@ -663,13 +660,14 @@
                                 # Report status of existing paths
                                 reporter.set_path("", parent_revnum, False, None)
                             except:
-                                reporter.abort_report()
+                                reporter.abort()
                                 raise
 
-                        reporter.finish_report()
+                        reporter.finish()
                     finally:
                         if conn is not None:
-                            self.source.transport.add_connection(conn)
+                            if not conn.is_busy():
+                                self.source.transport.add_connection(conn)
                 except:
                     editor.abort_edit()
                     raise

=== modified file 'logwalker.py'
--- a/logwalker.py	2008-06-15 02:48:51 +0000
+++ b/logwalker.py	2008-06-17 20:55:23 +0000
@@ -20,7 +20,6 @@
 from bzrlib.trace import mutter
 import bzrlib.ui as ui
 
-from svn.core import Pool
 import svn.delta
 
 from bzrlib.plugins.svn import changes, core
@@ -447,13 +446,12 @@
             def apply_textdelta(self, file_id, base_checksum):
                 pass
 
-        pool = Pool()
         editor = TreeLister(path)
         try:
             conn = self._transport.connections.get(urlutils.join(self._transport.get_svn_repos_root(), path))
-            reporter = conn.do_update(revnum, True, editor, pool)
-            reporter.set_path("", revnum, True, None, pool)
-            reporter.finish_report(pool)
+            reporter = conn.do_update(revnum, True, editor)
+            reporter.set_path("", revnum, True, None)
+            reporter.finish()
         finally:
             self._transport.connections.add(conn)
         return editor.files

=== modified file 'ra.py'
--- a/ra.py	2008-06-17 19:53:50 +0000
+++ b/ra.py	2008-06-17 20:55:23 +0000
@@ -68,10 +68,10 @@
         return svn.delta.editor_invoke_apply_textdelta(self.editor, baton,
                 *args, **kwargs)
 
-    def change_dir_prop(self, baton, name, value, pool=None):
+    def change_dir_prop(self, baton, name, value):
         assert self.recent_baton[-1] == baton
         return svn.delta.editor_invoke_change_dir_prop(self.editor, baton, 
-                                                       name, value, pool)
+                                                       name, value, None)
 
     def delete_entry(self, *args, **kwargs):
         return svn.delta.editor_invoke_delete_entry(self.editor, *args, **kwargs)
@@ -90,10 +90,10 @@
         self.recent_baton.append(baton)
         return baton
 
-    def change_file_prop(self, baton, name, value, pool=None):
+    def change_file_prop(self, baton, name, value):
         assert self.recent_baton[-1] == baton
         svn.delta.editor_invoke_change_file_prop(self.editor, baton, name, 
-                                                 value, pool)
+                                                 value, None)
 
     def close_file(self, baton, *args, **kwargs):
         assert self.recent_baton.pop() == baton
@@ -180,31 +180,30 @@
             self._baton = report_baton
             self._connection = connection
 
-        def set_path(self, path, revnum, start_empty, lock_token, pool=None):
+        def set_path(self, path, revnum, start_empty, lock_token):
             svn.ra.reporter2_invoke_set_path(self._reporter, self._baton, 
-                        path, revnum, start_empty, lock_token, pool)
+                        path, revnum, start_empty, lock_token, None)
 
-        def delete_path(self, path, pool=None):
+        def delete_path(self, path):
             svn.ra.reporter2_invoke_delete_path(self._reporter, self._baton,
-                    path, pool)
+                    path, None)
 
-        def link_path(self, path, url, revision, start_empty, lock_token, 
-                      pool=None):
+        def link_path(self, path, url, revision, start_empty, lock_token):
             svn.ra.reporter2_invoke_link_path(self._reporter, self._baton,
                     path, url, revision, start_empty, lock_token,
-                    pool)
+                    None)
 
-        def finish_report(self, pool=None):
+        def finish(self):
             try:
                 svn.ra.reporter2_invoke_finish_report(self._reporter, 
-                        self._baton, pool)
+                        self._baton, None)
             finally:
                 self._connection._unmark_busy()
 
-        def abort_report(self, pool=None):
+        def abort(self):
             try:
                 svn.ra.reporter2_invoke_abort_report(self._reporter, 
-                        self._baton, pool)
+                        self._baton, None)
             finally:
                 self._connection._unmark_busy()
 
@@ -246,20 +245,20 @@
         self.mutter("svn get-latest-revnum")
         return svn.ra.get_latest_revnum(self._ra)
 
-    def _make_editor(self, editor, pool=None):
-        edit, edit_baton = svn.delta.make_editor(editor, pool)
+    def _make_editor(self, editor):
+        edit, edit_baton = svn.delta.make_editor(editor, None)
         self._edit = edit
         self._edit_baton = edit_baton
         return self._edit, self._edit_baton
 
-    def do_switch(self, switch_rev, recurse, switch_url, editor, pool=None):
+    def do_switch(self, switch_rev, recurse, switch_url, editor):
         self.mutter('svn switch -r %d -> %r', switch_rev, switch_url)
         self._mark_busy()
-        edit, edit_baton = self._make_editor(editor, pool)
+        edit, edit_baton = self._make_editor(editor)
         return self.Reporter(self, svn.ra.do_switch(self._ra, switch_rev, "", 
-                             recurse, switch_url, edit, edit_baton, pool))
+                             recurse, switch_url, edit, edit_baton, None))
 
-    def change_rev_prop(self, revnum, name, value, pool=None):
+    def change_rev_prop(self, revnum, name, value):
         self.mutter('svn revprop -r%d --set %s=%s', revnum, name, value)
         svn.ra.change_rev_prop(self._ra, revnum, name, value)
 
@@ -274,7 +273,7 @@
         return svn.ra.unlock(self._ra, locks, break_lock, lock_cb)
  
     @needs_busy
-    def get_dir(self, path, revnum, pool=None, kind=False):
+    def get_dir(self, path, revnum, kind=False):
         self.mutter("svn ls -r %d '%r'", revnum, path)
         assert len(path) == 0 or path[0] != "/"
         # ra_dav backends fail with strange errors if the path starts with a 
@@ -306,26 +305,26 @@
                 raise FileExists(path)
             raise
 
-    def replay(self, revision, low_water_mark, send_deltas, editor, pool=None):
+    def replay(self, revision, low_water_mark, send_deltas, editor):
         self.mutter('svn replay -r%r:%r', low_water_mark, revision)
         self._mark_busy()
-        edit, edit_baton = self._make_editor(editor, pool)
+        edit, edit_baton = self._make_editor(editor)
         svn.ra.replay(self._ra, revision, low_water_mark, send_deltas,
-                      edit, edit_baton, pool)
+                      edit, edit_baton, None)
 
-    def do_update(self, revnum, recurse, editor, pool=None):
+    def do_update(self, revnum, recurse, editor):
         self.mutter('svn update -r %r', revnum)
         self._mark_busy()
-        edit, edit_baton = self._make_editor(editor, pool)
+        edit, edit_baton = self._make_editor(editor)
         return self.Reporter(self, svn.ra.do_update(self._ra, revnum, "", 
-                             recurse, edit, edit_baton, pool))
+                             recurse, edit, edit_baton, None))
 
     def has_capability(self, cap):
         return svn.ra.has_capability(self._ra, cap)
 
-    def revprop_list(self, revnum, pool=None):
+    def revprop_list(self, revnum):
         self.mutter('svn revprop-list -r %r', revnum)
-        return svn.ra.rev_proplist(self._ra, revnum, pool)
+        return svn.ra.rev_proplist(self._ra, revnum, None)
 
     def get_commit_editor(self, revprops, done_cb, lock_token, keep_locks):
         self._mark_busy()
@@ -363,8 +362,7 @@
 
     @needs_busy
     def get_log(self, paths, from_revnum, to_revnum, limit, 
-                discover_changed_paths, strict_node_history, revprops, rcvr, 
-                pool=None):
+                discover_changed_paths, strict_node_history, revprops, rcvr):
         # No paths starting with slash, please
         assert paths is None or all([not p.startswith("/") for p in paths])
         if (paths is None and 
@@ -376,7 +374,7 @@
             return svn.ra.get_log2(self._ra, paths, 
                            from_revnum, to_revnum, limit, 
                            discover_changed_paths, strict_node_history, False, 
-                           revprops, rcvr, pool)
+                           revprops, rcvr, None)
 
         class LogEntry(object):
             def __init__(self, changed_paths, rev, author, date, message):
@@ -398,7 +396,7 @@
 
         return svn.ra.get_log(self._ra, paths, 
                               from_revnum, to_revnum, limit, discover_changed_paths, 
-                              strict_node_history, rcvr_convert, pool)
+                              strict_node_history, rcvr_convert, None)
 
     @needs_busy
     def reparent(self, url):

=== modified file 'transport.py'
--- a/transport.py	2008-06-16 17:04:17 +0000
+++ b/transport.py	2008-06-17 20:55:23 +0000
@@ -21,10 +21,6 @@
 from bzrlib.trace import mutter
 from bzrlib.transport import Transport
 
-from svn.core import Pool
-import svn.core
-import svn.client
-
 from bzrlib.plugins.svn.core import SubversionException, get_config
 from bzrlib.plugins.svn.errors import convert_svn_error, NoSvnRepositoryPresent, ERR_BAD_URL, ERR_RA_SVN_REPOS_NOT_FOUND, ERR_FS_ALREADY_EXISTS, ERR_FS_NOT_FOUND, ERR_FS_NOT_DIRECTORY
 from bzrlib.plugins.svn.ra import DIRENT_KIND, RemoteAccess
@@ -116,7 +112,6 @@
     to fool Bazaar. """
     @convert_svn_error
     def __init__(self, url="", _backing_url=None, pool=None):
-        self.pool = Pool()
         bzr_url = url
         self.svn_url = bzr_to_svn_url(url)
         # _backing_url is an evil hack so the root directory of a repository 
@@ -187,10 +182,10 @@
         finally:
             self.add_connection(conn)
 
-    def do_switch(self, switch_rev, recurse, switch_url, editor, pool=None):
+    def do_switch(self, switch_rev, recurse, switch_url, editor):
         conn = self._open_real_transport()
         conn.set_unbusy_handler(lambda: self.add_connection(conn))
-        return conn.do_switch(switch_rev, recurse, switch_url, editor, pool)
+        return conn.do_switch(switch_rev, recurse, switch_url, editor)
 
     def iter_log(self, paths, from_revnum, to_revnum, limit, discover_changed_paths, 
                  strict_node_history, revprops):
@@ -244,7 +239,7 @@
         return iter(fetcher.next, None)
 
     def get_log(self, paths, from_revnum, to_revnum, limit, discover_changed_paths, 
-                strict_node_history, revprops, rcvr, pool=None):
+                strict_node_history, revprops, rcvr):
         assert paths is None or isinstance(paths, list), "Invalid paths"
         assert paths is None or all([isinstance(x, str) for x in paths])
 
@@ -258,7 +253,7 @@
             return conn.get_log(newpaths, 
                     from_revnum, to_revnum,
                     limit, discover_changed_paths, strict_node_history, 
-                    revprops, rcvr, pool)
+                    revprops, rcvr)
         finally:
             self.add_connection(conn)
 
@@ -267,18 +262,18 @@
             return self.connections.get(self.svn_url)
         return self.get_connection()
 
-    def change_rev_prop(self, revnum, name, value, pool=None):
+    def change_rev_prop(self, revnum, name, value):
         conn = self.get_connection()
         try:
-            return conn.change_rev_prop(revnum, name, value, pool)
+            return conn.change_rev_prop(revnum, name, value)
         finally:
             self.add_connection(conn)
 
-    def get_dir(self, path, revnum, pool=None, kind=False):
+    def get_dir(self, path, revnum, kind=False):
         path = self._request_path(path)
         conn = self.get_connection()
         try:
-            return conn.get_dir(path, revnum, pool, kind)
+            return conn.get_dir(path, revnum, kind)
         finally:
             self.add_connection(conn)
 
@@ -323,18 +318,18 @@
         finally:
             self.add_connection(conn)
 
-    def replay(self, revision, low_water_mark, send_deltas, editor, pool=None):
+    def replay(self, revision, low_water_mark, send_deltas, editor):
         conn = self._open_real_transport()
         try:
             return conn.replay(revision, low_water_mark, 
-                                             send_deltas, editor, pool)
+                                             send_deltas, editor)
         finally:
             self.add_connection(conn)
 
-    def do_update(self, revnum, recurse, editor, pool=None):
+    def do_update(self, revnum, recurse, editor):
         conn = self._open_real_transport()
         conn.set_unbusy_handler(lambda: self.add_connection(conn))
-        return conn.do_update(revnum, recurse, editor, pool)
+        return conn.do_update(revnum, recurse, editor)
 
     def has_capability(self, cap):
         conn = self.get_connection()
@@ -343,10 +338,10 @@
         finally:
             self.add_connection(conn)
 
-    def revprop_list(self, revnum, pool=None):
+    def revprop_list(self, revnum):
         conn = self.get_connection()
         try:
-            return conn.revprop_list(revnum, pool)
+            return conn.revprop_list(revnum)
         finally:
             self.add_connection(conn)
 

=== modified file 'tree.py'
--- a/tree.py	2008-06-15 02:11:24 +0000
+++ b/tree.py	2008-06-17 20:55:23 +0000
@@ -29,7 +29,6 @@
 import urllib
 
 import svn.wc, svn.delta
-from svn.core import Pool
 
 from bzrlib.plugins.svn import errors, properties, core
 
@@ -101,21 +100,21 @@
 # slightly different).
 
 if hasattr(svn.delta, 'tx_invoke_window_handler'):
-    def apply_txdelta_handler(src_stream, target_stream, pool):
+    def apply_txdelta_handler(src_stream, target_stream):
         assert hasattr(src_stream, 'read')
         assert hasattr(target_stream, 'write')
         window_handler, baton = svn.delta.tx_apply(src_stream, target_stream, 
-                                                   None, pool)
+                                                   None)
 
         def wrapper(window):
             window_handler(window, baton)
 
         return wrapper
 else:
-    def apply_txdelta_handler(src_stream, target_stream, pool):
+    def apply_txdelta_handler(src_stream, target_stream):
         assert hasattr(src_stream, 'read')
         assert hasattr(target_stream, 'write')
-        ret = svn.delta.svn_txdelta_apply(src_stream, target_stream, None, pool)
+        ret = svn.delta.svn_txdelta_apply(src_stream, target_stream, None)
 
         def wrapper(window):
             svn.delta.invoke_txdelta_window_handler(
@@ -129,20 +128,18 @@
     def __init__(self, repository, revision_id):
         self._repository = repository
         self._revision_id = revision_id
-        pool = Pool()
         (self.branch_path, self.revnum, mapping) = repository.lookup_revision_id(revision_id)
         self._inventory = Inventory()
         self.id_map = repository.get_fileid_map(self.revnum, self.branch_path, 
                                                 mapping)
-        editor = TreeBuildEditor(self, pool)
+        editor = TreeBuildEditor(self)
         self.file_data = {}
         root_repos = repository.transport.get_svn_repos_root()
         reporter = repository.transport.do_switch(
                 self.revnum, True, 
-                urlutils.join(root_repos, self.branch_path), editor, pool)
-        reporter.set_path("", 0, True, None, pool)
-        reporter.finish_report(pool)
-        pool.destroy()
+                urlutils.join(root_repos, self.branch_path), editor)
+        reporter.set_path("", 0, True, None)
+        reporter.finish()
 
     def get_file_lines(self, file_id):
         return osutils.split_lines(self.file_data[file_id])
@@ -150,13 +147,12 @@
 
 class TreeBuildEditor(svn.delta.Editor):
     """Builds a tree given Subversion tree transform calls."""
-    def __init__(self, tree, pool):
+    def __init__(self, tree):
         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
@@ -261,7 +257,7 @@
 
     def apply_textdelta(self, file_id, base_checksum):
         self.file_stream = StringIO()
-        return apply_txdelta_handler(StringIO(""), self.file_stream, self.pool)
+        return apply_txdelta_handler(StringIO(""), self.file_stream)
 
 
 class SvnBasisTree(RevisionTree):

=== modified file 'workingtree.py'
--- a/workingtree.py	2008-06-17 19:53:50 +0000
+++ b/workingtree.py	2008-06-17 20:55:23 +0000
@@ -654,6 +654,9 @@
         self.set_pending_merges(merges)
 
     def get_parent_ids(self):
+        return [self.base_revid] + self.pending_merges()
+
+    def pending_merges(self):
         merged = self._get_bzr_merges(self._get_base_branch_props()).splitlines()
         wc = self._get_wc()
         try:
@@ -670,9 +673,9 @@
                len(merged)+1 == len(set_merged))
 
         if len(set_merged) > len(merged):
-            return [self.base_revid] + set_merged[-1].split("\t")
+            return set_merged[-1].split("\t")
 
-        return [self.base_revid]
+        return []
 
     def _reset_data(self):
         pass




More information about the bazaar-commits mailing list