revrange: build spanset from x:y range
This slightly improves the performance in the optimal case:
% hg log -R mozilla-central -r0:tip -l1 --time
(before)
time: real 0.050 secs (user 0.040+0.000 sys 0.010+0.000)
(after)
time: real 0.020 secs (user 0.000+0.000 sys 0.010+0.000)
--- a/mercurial/scmutil.py Sun May 24 18:11:33 2015 +0900
+++ b/mercurial/scmutil.py Sun May 24 18:30:27 2015 +0900
@@ -737,8 +737,10 @@
end = revfix(repo, end, len(repo) - 1)
if end == nullrev and start < 0:
start = nullrev
- rangeiter = repo.changelog.revs(start, end)
- l = revset.baseset(rangeiter)
+ if start < end:
+ l = revset.spanset(repo, start, end + 1)
+ else:
+ l = revset.spanset(repo, start, end - 1)
subsets.append(l)
continue
elif spec and spec in repo: # single unquoted rev