--- 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