diff -r 6a53842727c1 -r 2f9f7889549b mercurial/revlogutils/deltas.py --- a/mercurial/revlogutils/deltas.py Fri Sep 07 11:17:31 2018 -0400 +++ b/mercurial/revlogutils/deltas.py Fri Sep 07 11:17:32 2018 -0400 @@ -585,7 +585,7 @@ deltas_limit = textlen * LIMIT_DELTA2TEXT tested = set([nullrev]) - for temptative in _rawgroups(revlog, p1, p2, cachedelta): + for temptative in _refinedgroups(revlog, p1, p2, cachedelta): group = [] for rev in temptative: # skip over empty delta (no need to include them in a chain) @@ -621,6 +621,13 @@ if issnapshot(rev): cache[deltaparent(rev)].append(rev) +def _refinedgroups(revlog, p1, p2, cachedelta): + good = None + for candidates in _rawgroups(revlog, p1, p2, cachedelta): + good = yield candidates + if good is not None: + break + def _rawgroups(revlog, p1, p2, cachedelta): """Provides group of revision to be tested as delta base