diff options
author | Ian Clatworthy <ian.clatworthy@canonical.com> | 2009-12-04 16:52:54 +1000 |
---|---|---|
committer | Ian Clatworthy <ian.clatworthy@canonical.com> | 2009-12-04 16:52:54 +1000 |
commit | 922c1a78a099c9a7d19d0de135a7df8951e956e0 (patch) | |
tree | bdea69f4ec137f4a26988887da062e9124066446 | |
parent | 4ee7790f86fcae1abaf50e2e8d435877634f371c (diff) | |
parent | 06df56c834f9963339de7cc572409193c6b0f9ac (diff) | |
download | python-fastimport-922c1a78a099c9a7d19d0de135a7df8951e956e0.tar.gz |
Faster post-processing of the inventory delta
-rw-r--r-- | bzr_commit_handler.py | 18 |
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): |