summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Arbash Meinel <john@arbash-meinel.com>2009-11-30 15:31:31 -0600
committerJohn Arbash Meinel <john@arbash-meinel.com>2009-11-30 15:31:31 -0600
commit06df56c834f9963339de7cc572409193c6b0f9ac (patch)
treebdea69f4ec137f4a26988887da062e9124066446
parent4ee7790f86fcae1abaf50e2e8d435877634f371c (diff)
downloadpython-fastimport-06df56c834f9963339de7cc572409193c6b0f9ac.tar.gz
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'.
-rw-r--r--bzr_commit_handler.py18
1 files 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):