[PATCH 1 of 4 clfilter] clfilter: remove usage of `range` and `xrange` in `scmutil.revrange`
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Tue Oct 16 21:20:13 UTC 2012
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1349703195 -7200
# Node ID 65e7dd7689c4078c077c3356421e966a6a8d5dbb
# Parent 72c234081ae1350220132c69750f5a093902a1e7
clfilter: remove usage of `range` and `xrange` in `scmutil.revrange`
For changelog level filtering to take effect it need to be used for any
iteration.
This changeset removes usage of `range` and `xrange` that survived the first
pass.
diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -614,13 +614,19 @@
start, end = spec.split(_revrangesep, 1)
start = revfix(repo, start, 0)
end = revfix(repo, end, len(repo) - 1)
- step = start > end and -1 or 1
+ reverse = False
+ if start > end:
+ start, end = end, start
+ reverse = True
+ rangeiter = repo.changelog.revs(start, end)
if not seen and not l:
# by far the most common case: revs = ["-1:0"]
- l = range(start, end + step, step)
+ l = list(rangeiter)
+ if reverse:
+ l.reverse()
# defer syncing seen until next iteration
continue
- newrevs = set(xrange(start, end + step, step))
+ newrevs = set(rangeiter)
if seen:
newrevs.difference_update(seen)
seen.update(newrevs)
More information about the Mercurial-devel
mailing list