~jameinel/bzr/2.4-incremental-push-stacked-745664

« back to all changes in this revision

Viewing changes to bzrlib/inventory.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2011-04-20 01:22:13 UTC
  • mfrom: (5802.1.2 mutable-inv-from-tree)
  • Revision ID: pqm@pqm.ubuntu.com-20110420012213-nagud1jxln5o6j36
(jelmer) Split Inventory._get_mutable_inventory() out into
 mutable_inventory_from_tree. (Jelmer Vernooij)

Show diffs side-by-side

added added

removed removed

Lines of Context:
822
822
                    file_id, self[file_id]))
823
823
        return delta
824
824
 
825
 
    def _get_mutable_inventory(self):
826
 
        """Returns a mutable copy of the object.
827
 
 
828
 
        Some inventories are immutable, yet working trees, for example, needs
829
 
        to mutate exisiting inventories instead of creating a new one.
830
 
        """
831
 
        raise NotImplementedError(self._get_mutable_inventory)
832
 
 
833
825
    def make_entry(self, kind, name, parent_id, file_id=None):
834
826
        """Simple thunk to bzrlib.inventory.make_entry."""
835
827
        return make_entry(kind, name, parent_id, file_id)
1133
1125
            other.add(entry.copy())
1134
1126
        return other
1135
1127
 
1136
 
    def _get_mutable_inventory(self):
1137
 
        """See CommonInventory._get_mutable_inventory."""
1138
 
        return copy.deepcopy(self)
1139
 
 
1140
1128
    def __iter__(self):
1141
1129
        """Iterate over all file-ids."""
1142
1130
        return iter(self._byid)
1619
1607
        self._fileid_to_entry_cache[result.file_id] = result
1620
1608
        return result
1621
1609
 
1622
 
    def _get_mutable_inventory(self):
1623
 
        """See CommonInventory._get_mutable_inventory."""
1624
 
        entries = self.iter_entries()
1625
 
        inv = Inventory(None, self.revision_id)
1626
 
        for path, inv_entry in entries:
1627
 
            inv.add(inv_entry.copy())
1628
 
        return inv
1629
 
 
1630
1610
    def create_by_apply_delta(self, inventory_delta, new_revision_id,
1631
1611
        propagate_caches=False):
1632
1612
        """Create a new CHKInventory by applying inventory_delta to this one.
2400
2380
            raise errors.InconsistentDelta(new_path, item[1],
2401
2381
                "new_path with no entry")
2402
2382
        yield item
 
2383
 
 
2384
 
 
2385
def mutable_inventory_from_tree(tree):
 
2386
    """Create a new inventory that has the same contents as a specified tree.
 
2387
 
 
2388
    :param tree: Revision tree to create inventory from
 
2389
    """
 
2390
    entries = tree.iter_entries_by_dir()
 
2391
    inv = Inventory(None, tree.get_revision_id())
 
2392
    for path, inv_entry in entries:
 
2393
        inv.add(inv_entry.copy())
 
2394
    return inv