diff -r c10c87c8fe79 -r 508dfd1c18df mercurial/cmdutil.py --- a/mercurial/cmdutil.py Wed Sep 09 17:04:44 2020 +0900 +++ b/mercurial/cmdutil.py Sun Oct 04 13:17:57 2020 +0900 @@ -2240,55 +2240,6 @@ return b'%d' % rev -def increasingwindows(windowsize=8, sizelimit=512): - while True: - yield windowsize - if windowsize < sizelimit: - windowsize *= 2 - - -def walkchangerevs(repo, revs, makefilematcher, prepare): - '''Iterate over files and the revs in a "windowed" way. - - Callers most commonly need to iterate backwards over the history - in which they are interested. Doing so has awful (quadratic-looking) - performance, so we use iterators in a "windowed" way. - - We walk a window of revisions in the desired order. Within the - window, we first walk forwards to gather data, then in the desired - order (usually backwards) to display it. - - This function returns an iterator yielding contexts. Before - yielding each context, the iterator will first call the prepare - function on each context in the window in forward order.''' - - if not revs: - return [] - change = repo.__getitem__ - - def iterate(): - it = iter(revs) - stopiteration = False - for windowsize in increasingwindows(): - nrevs = [] - for i in pycompat.xrange(windowsize): - rev = next(it, None) - if rev is None: - stopiteration = True - break - nrevs.append(rev) - for rev in sorted(nrevs): - ctx = change(rev) - prepare(ctx, makefilematcher(ctx)) - for rev in nrevs: - yield change(rev) - - if stopiteration: - break - - return iterate() - - def add(ui, repo, match, prefix, uipathfn, explicitonly, **opts): bad = []