mercurial/revlogutils/deltas.py
changeset 39496 2f9f7889549b
parent 39495 6a53842727c1
child 39497 5b308a4e6d03
--- 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