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)
This commit is contained in:
Yuya Nishihara 2015-05-24 18:30:27 +09:00
parent 6bf5f80705
commit d0b6a92234

View File

@ -737,8 +737,10 @@ def revrange(repo, revs):
end = revfix(repo, end, len(repo) - 1) end = revfix(repo, end, len(repo) - 1)
if end == nullrev and start < 0: if end == nullrev and start < 0:
start = nullrev start = nullrev
rangeiter = repo.changelog.revs(start, end) if start < end:
l = revset.baseset(rangeiter) l = revset.spanset(repo, start, end + 1)
else:
l = revset.spanset(repo, start, end - 1)
subsets.append(l) subsets.append(l)
continue continue
elif spec and spec in repo: # single unquoted rev elif spec and spec in repo: # single unquoted rev