# HG changeset patch # User Pierre-Yves David # Date 1413526244 25200 # Node ID 69524a05a7fa57ca96d368d18cde5874b95d2125 # Parent 6f31f46b85440257c219cbfd7c3f066a16a3f9fa 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) diff -r 6f31f46b8544 -r 69524a05a7fa mercurial/revset.py --- 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()