Rev 3885: Bring in Inventory._make_delta in http://bzr.arbash-meinel.com/branches/bzr/1.11/differ_serializer

John Arbash Meinel john at arbash-meinel.com
Fri Dec 5 22:18:13 GMT 2008


At http://bzr.arbash-meinel.com/branches/bzr/1.11/differ_serializer

------------------------------------------------------------
revno: 3885
revision-id: john at arbash-meinel.com-20081205221809-d3c4cz1jyv9p1y1h
parent: john at arbash-meinel.com-20081205172501-a0g7ho4sl29q6dz9
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: differ_serializer
timestamp: Fri 2008-12-05 16:18:09 -0600
message:
  Bring in Inventory._make_delta
-------------- next part --------------
=== modified file 'bzrlib/inventory.py'
--- a/bzrlib/inventory.py	2008-08-09 00:45:30 +0000
+++ b/bzrlib/inventory.py	2008-12-05 22:18:09 +0000
@@ -1233,9 +1233,27 @@
     def has_id(self, file_id):
         return (file_id in self._byid)
 
+    def _make_delta(self, old):
+        """Make an inventory delta from two inventories."""
+        old_ids = set(old)
+        new_ids = set(self)
+        adds = new_ids - old_ids
+        deletes = old_ids - new_ids
+        common = old_ids.intersection(new_ids)
+        delta = []
+        for file_id in deletes:
+            delta.append((old.id2path(file_id), None, file_id, None))
+        for file_id in adds:
+            delta.append((None, self.id2path(file_id), file_id, self[file_id]))
+        for file_id in common:
+            if old[file_id] != self[file_id]:
+                delta.append((old.id2path(file_id), self.id2path(file_id),
+                    file_id, self[file_id]))
+        return delta
+
     def remove_recursive_id(self, file_id):
         """Remove file_id, and children, from the inventory.
-        
+
         :param file_id: A file_id to remove.
         """
         to_find_delete = [self._byid[file_id]]



More information about the bazaar-commits mailing list