Rev 2679: Remove usage of difference_update in knit.py. in http://people.ubuntu.com/~robertc/baz2.0/repository

Robert Collins robertc at robertcollins.net
Thu Jul 26 06:29:36 BST 2007


At http://people.ubuntu.com/~robertc/baz2.0/repository

------------------------------------------------------------
revno: 2679
revision-id: robertc at robertcollins.net-20070726052933-8uflqpri7n5lba0c
parent: robertc at robertcollins.net-20070726043556-f27nyuewg69iopql
committer: Robert Collins <robertc at robertcollins.net>
branch nick: repository
timestamp: Thu 2007-07-26 15:29:33 +1000
message:
  Remove usage of difference_update in knit.py.
modified:
  bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
=== modified file 'bzrlib/knit.py'
--- a/bzrlib/knit.py	2007-07-26 03:26:31 +0000
+++ b/bzrlib/knit.py	2007-07-26 05:29:33 +0000
@@ -1421,6 +1421,7 @@
             # get all pending nodes
             this_iteration = pending
             new_nodes = self._get_entries(this_iteration)
+            found = set()
             pending = set()
             for (key, value, node_refs) in new_nodes:
                 # dont ask for ghosties - otherwise
@@ -1428,11 +1429,14 @@
                 # being entirely ghosted.
                 graph[key] = [parent for parent in node_refs[0]
                     if parent not in ghosts]
-                # queue parents 
-                pending.update(graph[key])
-            ghosts.difference_update(graph)
-            # dont examine known nodes
-            pending.difference_update(graph)
+                # queue parents
+                for parent in graph[key]:
+                    # dont examine known nodes again
+                    if parent in graph:
+                        continue
+                    pending.add(parent)
+                found.add(key)
+            ghosts.update(this_iteration.difference(found))
         if versions.difference(graph):
             raise RevisionNotPresent(versions.difference(graph).pop(), self)
         if not topo_sorted:
@@ -1457,7 +1461,11 @@
             for (key, value, node_refs) in new_nodes:
                 graph[key] = node_refs[0]
                 # queue parents 
-                pending.update(graph[key])
+                for parent in graph[key]:
+                    # dont examine known nodes again
+                    if parent in graph:
+                        continue
+                    pending.add(parent)
             missing_versions = this_iteration.difference(graph)
             missing_needed = versions.intersection(missing_versions)
             if missing_needed:
@@ -1465,8 +1473,7 @@
             for missing_version in missing_versions:
                 # add a key, no parents
                 graph[missing_version] = []
-            # dont examine known nodes
-            pending.difference_update(graph)
+                pending.discard(missing_version) # don't look for it
         return topo_sort(graph.items())
 
     def get_graph(self):



More information about the bazaar-commits mailing list