changeset 25386:a5a95642144b

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)
author Yuya Nishihara <yuya@tcha.org>
date Sun, 24 May 2015 18:30:27 +0900
parents a26a55406c0a
children 390a10b7843b
files mercurial/scmutil.py
diffstat 1 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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