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