revset-rangeset: 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 benefit ofs the fullreposet:
revset) 10:100
before) wall 0.002774 comb 0.000000 user 0.000000 sys 0.000000 (best of 797)
after) wall 0.001977 comb 0.000000 user 0.000000 sys 0.000000 (best of 1244)
revset) parents(10):parents(100)
before) wall 0.005054 comb 0.000000 user 0.000000 sys 0.000000 (best of 481)
after) wall 0.002060 comb 0.000000 user 0.000000 sys 0.000000 (best of 1056)
--- a/mercurial/revset.py Sun Oct 19 22:19:22 2014 -0700
+++ b/mercurial/revset.py Thu Oct 16 23:10:44 2014 -0700
@@ -265,9 +265,8 @@
return stringset(repo, subset, x)
def rangeset(repo, subset, x, y):
- cl = baseset(repo.changelog)
- m = getset(repo, cl, x)
- n = getset(repo, cl, y)
+ m = getset(repo, fullreposet(repo), x)
+ n = getset(repo, fullreposet(repo), y)
if not m or not n:
return baseset()