diff -r 64ddad2f26bb -r f90b333e79cb mercurial/revlog.py --- a/mercurial/revlog.py Tue Aug 14 13:47:07 2018 -0700 +++ b/mercurial/revlog.py Fri Jul 27 12:08:10 2018 +0200 @@ -750,7 +750,11 @@ deltaparent = self.revlog.deltaparent deltainfo = None + deltas_limit = revinfo.textlen * LIMIT_DELTA2TEXT for candidaterevs in self._getcandidaterevs(p1, p2, cachedelta): + # filter out delta base that will never produce good delta + candidaterevs = [r for r in candidaterevs + if self.revlog.length(r) <= deltas_limit] nominateddeltas = [] for candidaterev in candidaterevs: # skip over empty delta (no need to include them in a chain)