summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Clatworthy <ian.clatworthy@canonical.com>2009-12-04 16:52:54 +1000
committerIan Clatworthy <ian.clatworthy@canonical.com>2009-12-04 16:52:54 +1000
commit922c1a78a099c9a7d19d0de135a7df8951e956e0 (patch)
treebdea69f4ec137f4a26988887da062e9124066446
parent4ee7790f86fcae1abaf50e2e8d435877634f371c (diff)
parent06df56c834f9963339de7cc572409193c6b0f9ac (diff)
downloadpython-fastimport-922c1a78a099c9a7d19d0de135a7df8951e956e0.tar.gz
Faster post-processing of the inventory 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):