localrepo: use lazy ancestor membership testing
For a repository with over 400,000 commits, rebasing one revision near tip,
this avoids two treks up the DAG, speeding the operation up by around 1.6
seconds.
--- a/mercurial/localrepo.py Tue Dec 18 12:47:20 2012 -0800
+++ b/mercurial/localrepo.py Mon Dec 17 20:43:37 2012 -0800
@@ -2081,7 +2081,7 @@
bases = [nullid]
csets, bases, heads = cl.nodesbetween(bases, heads)
# We assume that all ancestors of bases are known
- common = set(cl.ancestors([cl.rev(n) for n in bases]))
+ common = cl.ancestors([cl.rev(n) for n in bases])
return self._changegroupsubset(common, csets, heads, source)
def getlocalbundle(self, source, outgoing):