mercurial/revlog.py
changeset 39083 8f83a953dddf
parent 39079 18e866ae2a7d
child 39084 152ae0f84f9a
--- a/mercurial/revlog.py	Sat Jul 28 14:14:59 2018 +0200
+++ b/mercurial/revlog.py	Fri Jul 27 19:09:41 2018 +0200
@@ -743,10 +743,20 @@
         p2 = revinfo.p2
         revlog = self.revlog
 
+        deltalength = self.revlog.length
+        deltaparent = self.revlog.deltaparent
+
         deltainfo = None
         for candidaterevs in self._getcandidaterevs(p1, p2, cachedelta):
             nominateddeltas = []
             for candidaterev in candidaterevs:
+                # skip over empty delta (no need to include them in a chain)
+                while candidaterev != nullrev and not deltalength(candidaterev):
+                    candidaterev = deltaparent(candidaterev)
+                # no need to try a delta against nullid, this will be handled
+                # by fulltext later.
+                if candidaterev == nullrev:
+                    continue
                 # no delta for rawtext-changing revs (see "candelta" for why)
                 if revlog.flags(candidaterev) & REVIDX_RAWTEXT_CHANGING_FLAGS:
                     continue