[Pkg-bazaar-commits] ./bzr-gtk/unstable r31: fix a bug with fast sorting

David Allouche david.allouche at canonical.com
Fri Apr 10 07:15:42 UTC 2009


------------------------------------------------------------
revno: 31
committer: David Allouche <david.allouche at canonical.com>
timestamp: Sat 2005-12-03 04:38:49 +0100
message:
  fix a bug with fast sorting
modified:
  graph.py
-------------- next part --------------
=== modified file 'graph.py'
--- a/graph.py	2005-12-03 02:48:52 +0000
+++ b/graph.py	2005-12-03 03:38:49 +0000
@@ -86,7 +86,7 @@
                     for (revid, c) in self.children_of_id.iteritems())
 
     def first_ancestry_traversal(self):
-        distances = { self.start: 0 }
+        distances = {}
         todo = [self.start]
         revisions = self.revisions
         children_of_id = self.children_of_id
@@ -103,6 +103,7 @@
                         todo.insert(0, parent_id)
         # Topologically sorted revids, with the most recent revisions first.
         # A revision occurs only after all of its children.
+        self.distances = distances
         return sorted(distances, key=distances.get)
 
     def remove_redundant_parents(self, sorted_revids):
@@ -169,7 +170,6 @@
                 if child.revision_id not in distances:
                     if expected_id not in pending_ids:
                         pending_ids.append(expected_id)
-                    assert len(pending_ids) > 1
                     expected_id = pending_ids.pop(0)
                     skipped_revids.append(revid)
                     sorted_revids[:0] = skipped_revids
@@ -186,7 +186,8 @@
                     break
                 expected_id = pending_ids.pop(0)
                 # if the next expected revid has already been skipped, requeue
-                # it and its potential ancestors.
+                # the skipped ids, except those that would go right back to the
+                # skipped list.
                 if expected_id in skipped_revids:
                     pos = skipped_revids.index(expected_id)
                     sorted_revids[:0] = skipped_revids[pos:]
@@ -274,15 +275,11 @@
     distance = DistanceMethod(branch, start)
     distance.fill_caches()
     sorted_revids = distance.first_ancestry_traversal()
-    print 'removing redundant parents'
     distance.remove_redundant_parents(sorted_revids)
     children = distance.make_children_map()
-    print 'sorting'
     sorted_revids = distance.sort_revisions(sorted_revids)
-    print 'colouring'
     for revid in sorted_revids:
         distance.choose_colour(revid)
-    print 'done'
 
     revisions = distance.revisions
     colours = distance.colours



More information about the Pkg-bazaar-commits mailing list