diff options
author | John Arbash Meinel <john@arbash-meinel.com> | 2009-11-30 15:31:31 -0600 |
---|---|---|
committer | John Arbash Meinel <john@arbash-meinel.com> | 2009-11-30 15:31:31 -0600 |
commit | 06df56c834f9963339de7cc572409193c6b0f9ac (patch) | |
tree | bdea69f4ec137f4a26988887da062e9124066446 | |
parent | 4ee7790f86fcae1abaf50e2e8d435877634f371c (diff) | |
download | python-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.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): |