From 06df56c834f9963339de7cc572409193c6b0f9ac Mon Sep 17 00:00:00 2001 From: John Arbash Meinel Date: Mon, 30 Nov 2009 15:31:31 -0600 Subject: 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'. --- bzr_commit_handler.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/bzr_commit_handler.py b/bzr_commit_handler.py index 0114b82..0599b67 100644 --- a/bzr_commit_handler.py +++ b/bzr_commit_handler.py @@ -651,16 +651,22 @@ class InventoryDeltaCommitHandler(GenericCommitHandler): 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): -- cgit v1.2.1