diff -r d031609b3cb7 -r 33275ab5e837 mercurial/revlog.py --- a/mercurial/revlog.py Tue Feb 06 19:08:25 2018 -0800 +++ b/mercurial/revlog.py Tue Feb 13 11:35:32 2018 -0800 @@ -407,6 +407,9 @@ for candidaterevs in self._getcandidaterevs(p1, p2, cachedelta): nominateddeltas = [] for candidaterev in candidaterevs: + # no delta for rawtext-changing revs (see "candelta" for why) + if revlog.flags(candidaterev) & REVIDX_RAWTEXT_CHANGING_FLAGS: + continue candidatedelta = self._builddeltainfo(revinfo, candidaterev, fh) if revlog._isgooddeltainfo(candidatedelta, revinfo.textlen): nominateddeltas.append(candidatedelta) @@ -2090,7 +2093,14 @@ deltacomputer = _deltacomputer(self) revinfo = _revisioninfo(node, p1, p2, btext, textlen, cachedelta, flags) - deltainfo = deltacomputer.finddeltainfo(revinfo, fh) + + # no delta for flag processor revision (see "candelta" for why) + # not calling candelta since only one revision needs test, also to + # avoid overhead fetching flags again. + if flags & REVIDX_RAWTEXT_CHANGING_FLAGS: + deltainfo = None + else: + deltainfo = deltacomputer.finddeltainfo(revinfo, fh) if deltainfo is not None: base = deltainfo.base