Mercurial > hg
changeset 16776:5088d0b9a9a1
cmdutil: extract increasing_windows() from walkchangerevs()
It will be reused in the revset-based version.
author | Patrick Mezard <patrick@mezard.eu> |
---|---|
date | Tue, 08 May 2012 22:43:44 +0200 |
parents | e6af8676302f |
children | 058e14da7044 |
files | mercurial/cmdutil.py |
diffstat | 1 files changed, 15 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Sat May 19 09:34:25 2012 -0500 +++ b/mercurial/cmdutil.py Tue May 08 22:43:44 2012 +0200 @@ -958,6 +958,20 @@ raise util.Abort(_("revision matching date not found")) +def increasingwindows(start, end, windowsize=8, sizelimit=512): + if start < end: + while start < end: + yield start, min(windowsize, end - start) + start += windowsize + if windowsize < sizelimit: + windowsize *= 2 + else: + while start > end: + yield start, min(windowsize, start - end - 1) + start -= windowsize + if windowsize < sizelimit: + windowsize *= 2 + def walkchangerevs(repo, match, opts, prepare): '''Iterate over files and the revs in which they changed. @@ -973,20 +987,6 @@ yielding each context, the iterator will first call the prepare function on each context in the window in forward order.''' - def increasing_windows(start, end, windowsize=8, sizelimit=512): - if start < end: - while start < end: - yield start, min(windowsize, end - start) - start += windowsize - if windowsize < sizelimit: - windowsize *= 2 - else: - while start > end: - yield start, min(windowsize, start - end - 1) - start -= windowsize - if windowsize < sizelimit: - windowsize *= 2 - follow = opts.get('follow') or opts.get('follow_first') if not len(repo): @@ -1176,7 +1176,7 @@ def want(rev): return rev in wanted - for i, window in increasing_windows(0, len(revs)): + for i, window in increasingwindows(0, len(revs)): nrevs = [rev for rev in revs[i:i + window] if want(rev)] for rev in sorted(nrevs): fns = fncache.get(rev)