Rev 1867: Pass parent invs when committing rather than just base inv. in file:///data/jelmer/bzr-svn/trunk/

Jelmer Vernooij jelmer at samba.org
Mon Sep 8 20:27:02 BST 2008


At file:///data/jelmer/bzr-svn/trunk/

------------------------------------------------------------
revno: 1867
revision-id: jelmer at samba.org-20080908192700-somwjj4s32aanxli
parent: jelmer at samba.org-20080908180658-ohq6b9ax8o8ofyc1
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Mon 2008-09-08 21:27:00 +0200
message:
  Pass parent invs when committing rather than just base inv.
modified:
  commit.py                      commit.py-20060607190346-qvq128wgfubhhgm2-1
=== modified file 'commit.py'
--- a/commit.py	2008-09-08 05:00:58 +0000
+++ b/commit.py	2008-09-08 19:27:00 +0000
@@ -127,9 +127,9 @@
     """Commit Builder implementation wrapped around svn_delta_editor. """
 
     def __init__(self, repository, branch_path, parents, config, timestamp, 
-                 timezone, committer, revprops, revision_id, old_inv=None,
+                 timezone, committer, revprops, revision_id, parent_invs=None,
                  push_metadata=True, graph=None, opt_signature=None,
-                 append_revisions_only=True):
+                 texts=None, append_revisions_only=True):
         """Instantiate a new SvnCommitBuilder.
 
         :param repository: SvnRepository to commit to.
@@ -177,17 +177,20 @@
             self._base_revmeta = self.repository._revmeta_provider.get_revision(self.base_path, self.base_revnum)
             self._base_branch_props = self._base_revmeta.get_fileprops()
 
-        if old_inv is None:
-            if self.base_revid == NULL_REVISION:
-                self.old_inv = Inventory(root_id=None)
-            else:
-                self.old_inv = self.repository.get_inventory(self.base_revid)
-        else:
-            self.old_inv = old_inv
-            # Not all repositories appear to set Inventory.revision_id, 
-            # so allow None as well.
-            assert self.old_inv.revision_id in (None, self.base_revid), \
-                    "%s != %s" % (self.old_inv.revision_id, self.base_revid)
+        if parent_invs is None:
+            self.parent_invs = self.repository.get_inventories(parents)
+        else:
+            self.parent_invs = parent_invs
+
+        if self.base_revid == NULL_REVISION:
+            self.old_inv = Inventory(root_id=None)
+        else:
+            self.old_inv = self.parent_invs[0]
+
+        # Not all repositories appear to set Inventory.revision_id, 
+        # so allow None as well.
+        assert self.old_inv.revision_id in (None, self.base_revid), \
+                "%s != %s" % (self.old_inv.revision_id, self.base_revid)
 
         # Determine revisions merged in this one
         merges = filter(lambda x: x != self.base_revid, parents)
@@ -795,15 +798,19 @@
     except NoSuchRevision:
         opt_signature = None
 
+    parent_trees = source_repo.revision_trees(rev.parent_ids)
+
     builder = SvnCommitBuilder(target_repo, branch_path, base_revids,
                                config, rev.timestamp,
                                rev.timezone, rev.committer, rev.properties, 
-                               revision_id, base_tree.inventory, 
+                               revision_id, 
+                               [t.inventory for t in parent_trees], 
                                push_metadata=push_metadata,
                                graph=graph, opt_signature=opt_signature,
+                               texts=source_repo.texts,
                                append_revisions_only=append_revisions_only)
                          
-    replay_delta(builder, source_repo.revision_trees(rev.parent_ids), old_tree)
+    replay_delta(builder, parent_trees, old_tree)
     try:
         revid = builder.commit(rev.message)
     except SubversionException, (_, num):




More information about the bazaar-commits mailing list