Rev 263: When post-processing the delta stream, don't ask to generate a full inventory to check for deletions. in lp:~jameinel/bzr-fastimport/mutable-inv-check

John Arbash Meinel john at arbash-meinel.com
Mon Nov 30 21:31:33 GMT 2009


At lp:~jameinel/bzr-fastimport/mutable-inv-check

------------------------------------------------------------
revno: 263
revision-id: john at arbash-meinel.com-20091130213131-j9re4s9j2ofemqso
parent: ian.clatworthy at canonical.com-20091129103732-v5ldw0hh7cokrskt
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: mutable-inv-check
timestamp: Mon 2009-11-30 15:31:31 -0600
message:
  When post-processing the delta stream, don't ask to generate a full inventory to check for deletions.
  Instead, just use 'create_by_apply_delta'.
-------------- next part --------------
=== modified file 'bzr_commit_handler.py'
--- a/bzr_commit_handler.py	2009-11-04 01:52:34 +0000
+++ b/bzr_commit_handler.py	2009-11-30 21:31:31 +0000
@@ -651,16 +651,22 @@
 
     def _get_proposed_inventory(self, delta):
         if len(self.parents):
-            new_inv = self.basis_inventory._get_mutable_inventory()
+            # new_inv = self.basis_inventory._get_mutable_inventory()
+            # Note that this will create unreferenced chk pages if we end up
+            # deleting entries, because this 'test' inventory won't end up
+            # used. However, it is cheaper than having to create a full copy of
+            # the inventory for every commit.
+            new_inv = self.basis_inventory.create_by_apply_delta(delta,
+                'not-a-valid-revision-id:')
         else:
             new_inv = inventory.Inventory(revision_id=self.revision_id)
             # This is set in the delta so remove it to prevent a duplicate
             del new_inv[inventory.ROOT_ID]
-        try:
-            new_inv.apply_delta(delta)
-        except errors.InconsistentDelta:
-            self.mutter("INCONSISTENT DELTA IS:\n%s" % "\n".join([str(de) for de in delta]))
-            raise
+            try:
+                new_inv.apply_delta(delta)
+            except errors.InconsistentDelta:
+                self.mutter("INCONSISTENT DELTA IS:\n%s" % "\n".join([str(de) for de in delta]))
+                raise
         return new_inv
 
     def _add_entry(self, entry):



More information about the bazaar-commits mailing list