# HG changeset patch # User Siddharth Agarwal # Date 1355805817 28800 # Node ID ff36650e4238810e260e954fc55b9fa0be069f18 # Parent f7f8159caad38b4cf7237de34222ab09f2eb18f5 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. diff -r f7f8159caad3 -r ff36650e4238 mercurial/localrepo.py --- 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):