Rev 4338: Teach graph.find_lefthand_distances about ghosts. in http://people.ubuntu.com/~robertc/baz2.0/check

Robert Collins robertc at robertcollins.net
Mon May 11 02:17:24 BST 2009


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

------------------------------------------------------------
revno: 4338
revision-id: robertc at robertcollins.net-20090511011721-mc05o4h9bzlh62ht
parent: robertc at robertcollins.net-20090511011236-svd297xfll30g1wm
committer: Robert Collins <robertc at robertcollins.net>
branch nick: check
timestamp: Mon 2009-05-11 11:17:21 +1000
message:
  Teach graph.find_lefthand_distances about ghosts.
=== modified file 'bzrlib/graph.py'
--- a/bzrlib/graph.py	2009-05-08 06:23:01 +0000
+++ b/bzrlib/graph.py	2009-05-11 01:17:21 +0000
@@ -314,9 +314,15 @@
         # some sort of hit rate.
         result = {}
         known_revnos = []
+        ghosts = []
         for key in keys:
-            known_revnos.append(
-                (key, self.find_distance_to_null(key, known_revnos)))
+            try:
+                known_revnos.append(
+                    (key, self.find_distance_to_null(key, known_revnos)))
+            except errors.GhostRevisionsHaveNoRevno:
+                ghosts.append(key)
+        for key in ghosts:
+            known_revnos.append((key, -1))
         return dict(known_revnos)
 
     def find_unique_ancestors(self, unique_revision, common_revisions):

=== modified file 'bzrlib/tests/test_graph.py'
--- a/bzrlib/tests/test_graph.py	2009-05-08 06:23:01 +0000
+++ b/bzrlib/tests/test_graph.py	2009-05-11 01:17:21 +0000
@@ -531,6 +531,13 @@
         distance_graph = graph.find_lefthand_distances(['rev3b', 'rev2a'])
         self.assertEqual({'rev2a': 2, 'rev3b': 3}, distance_graph)
 
+    def test_lefthand_distance_ghosts(self):
+        """A simple does it work test for graph.lefthand_distance(keys)."""
+        nodes = {'nonghost':[NULL_REVISION], 'toghost':['ghost']}
+        graph = self.make_graph(nodes)
+        distance_graph = graph.find_lefthand_distances(['nonghost', 'toghost'])
+        self.assertEqual({'nonghost': 1, 'toghost': -1}, distance_graph)
+
     def test_recursive_unique_lca(self):
         """Test finding a unique least common ancestor.
 




More information about the bazaar-commits mailing list