# HG changeset patch # User Siddharth Agarwal # Date 1416014460 28800 # Node ID bcc3012f8477811b01e5c07b0a55c073a59ca20d # Parent 83225aff0265e76647d1e627d1723e0afb0befdf ancestor: add a way to add to bases of a missing ancestor object This will be useful for setdiscovery, since with that we incrementally add to our knowledge of common nodes. diff -r 83225aff0265 -r bcc3012f8477 mercurial/ancestor.py --- a/mercurial/ancestor.py Sun Nov 16 00:39:29 2014 -0800 +++ b/mercurial/ancestor.py Fri Nov 14 17:21:00 2014 -0800 @@ -150,6 +150,10 @@ '''whether the common set has any non-trivial bases''' return self.bases and self.bases != set([nullrev]) + def addbases(self, newbases): + '''grow the ancestor set by adding new bases''' + self.bases.update(newbases) + def missingancestors(self, revs): '''return all the ancestors of revs that are not ancestors of self.bases diff -r 83225aff0265 -r bcc3012f8477 tests/test-ancestor.py --- a/tests/test-ancestor.py Sun Nov 16 00:39:29 2014 -0800 +++ b/tests/test-ancestor.py Fri Nov 14 17:21:00 2014 -0800 @@ -45,6 +45,8 @@ def __init__(self, ancs, bases): self.ancs = ancs self.bases = set(bases) + def addbases(self, newbases): + self.bases.update(newbases) def missingancestors(self, revs): res = set() for rev in revs: @@ -97,6 +99,11 @@ naiveinc = naiveincrementalmissingancestors(ancs, bases) seq = [] for _ in xrange(inccount): + if rng.random() < 0.2: + newbases = samplerevs(graphnodes) + seq.append(('addbases', newbases)) + inc.addbases(newbases) + naiveinc.addbases(newbases) revs = samplerevs(graphnodes) seq.append(('missingancestors', revs)) h = inc.missingancestors(revs)