~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/inventory.py

Move '_make_inv_delta' onto Inventory (UNTESTED).

Show diffs side-by-side

added added

removed removed

Lines of Context:
845
845
                        child_dirs.append((child_relpath+'/', child_ie))
846
846
            stack.extend(reversed(child_dirs))
847
847
 
 
848
    def _make_delta(self, old):
 
849
        """Make an inventory delta from two inventories."""
 
850
        old_ids = set(old)
 
851
        new_ids = set(self)
 
852
        adds = new_ids - old_ids
 
853
        deletes = old_ids - new_ids
 
854
        common = old_ids.intersection(new_ids)
 
855
        delta = []
 
856
        for file_id in deletes:
 
857
            delta.append((old.id2path(file_id), None, file_id, None))
 
858
        for file_id in adds:
 
859
            delta.append((None, self.id2path(file_id), file_id, self[file_id]))
 
860
        for file_id in common:
 
861
            if old[file_id] != self[file_id]:
 
862
                delta.append((old.id2path(file_id), self.id2path(file_id),
 
863
                    file_id, self[file_id]))
 
864
        return delta
 
865
 
848
866
 
849
867
class Inventory(CommonInventory):
850
868
    """Inventory of versioned files in a tree.
1619
1637
        """Return the number of entries in the inventory."""
1620
1638
        return len(self.id_to_entry)
1621
1639
 
 
1640
    def _make_delta(self, old):
 
1641
        """Make an inventory delta from two inventories."""
 
1642
        if type(old) != CHKInventory:
 
1643
            return CommonInventory._make_delta(self, old)
 
1644
        delta = []
 
1645
        for key, old_value, self_value in \
 
1646
            self.id_to_entry.iter_changes(old.id_to_entry):
 
1647
            file_id = key[0]
 
1648
            if old_value is not None:
 
1649
                old_path = old.id2path(file_id)
 
1650
            else:
 
1651
                old_path = None
 
1652
            if self_value is not None:
 
1653
                entry = self._bytes_to_entry(self_value)
 
1654
                new_path = self.id2path(file_id)
 
1655
            else:
 
1656
                entry = None
 
1657
                new_path = None
 
1658
            delta.append((old_path, new_path, file_id, entry))
 
1659
        return delta
 
1660
 
1622
1661
    def path2id(self, name):
1623
1662
        """Walk down through directories to return entry of last component.
1624
1663