revset-parentspec: call 'getset' on a 'fullreposet'
authorPierre-Yves David <pierre-yves.david@fb.com>
Thu, 16 Oct 2014 23:15:06 -0700
changeset 23165 7e8737e6ab08
parent 23164 7a42e5d4c418
child 23166 30e0dcd7c5ff
revset-parentspec: call 'getset' on a 'fullreposet' Calling 'baseset(repo.changelog)' builds a list for all revisions in the repo. And we already have the lazy and efficient 'fullreposet' class for this purpose. This gives us the usual benefits of the fullreposet: revset) 100^1 before) wall 0.002694 comb 0.000000 user 0.000000 sys 0.000000 (best of 897) after) wall 0.000997 comb 0.000000 user 0.000000 sys 0.000000 (best of 2324) revset) parents(100)^1 before) wall 0.003832 comb 0.000000 user 0.000000 sys 0.000000 (best of 587) after) wall 0.001034 comb 0.000000 user 0.000000 sys 0.000000 (best of 2309) revset) (100^1)^1 before) wall 0.005616 comb 0.000000 user 0.000000 sys 0.000000 (best of 405) after) wall 0.001030 comb 0.000000 user 0.000000 sys 0.000000 (best of 2258)
mercurial/revset.py
--- a/mercurial/revset.py	Thu Oct 16 23:14:17 2014 -0700
+++ b/mercurial/revset.py	Thu Oct 16 23:15:06 2014 -0700
@@ -1257,7 +1257,7 @@
         raise error.ParseError(_("^ expects a number 0, 1, or 2"))
     ps = set()
     cl = repo.changelog
-    for r in getset(repo, baseset(cl), x):
+    for r in getset(repo, fullreposet(repo), x):
         if n == 0:
             ps.add(r)
         elif n == 1: