mercurial/revlogutils/deltas.py
changeset 39502 e4d4361d0bcd
parent 39501 993d7e2c8b79
child 39503 5aef5afa8654
--- a/mercurial/revlogutils/deltas.py	Fri Sep 07 11:17:34 2018 -0400
+++ b/mercurial/revlogutils/deltas.py	Fri Sep 07 11:17:35 2018 -0400
@@ -647,6 +647,17 @@
         good = yield candidates
         if good is not None:
             break
+
+    # if we have a refinable value, try to refine it
+    if good is not None and good not in (p1, p2) and revlog.issnapshot(good):
+        # refine snapshot down
+        previous = None
+        while previous != good:
+            previous = good
+            base = revlog.deltaparent(good)
+            if base == nullrev:
+                break
+            good = yield (base,)
     # we have found nothing
     yield None