mercurial/revlogutils/deltas.py
changeset 41108 38e88450138c
parent 41079 88d813cd9acd
child 41109 3e1960e23e6b
--- a/mercurial/revlogutils/deltas.py	Sun Dec 23 12:39:20 2018 +0900
+++ b/mercurial/revlogutils/deltas.py	Thu Dec 20 10:15:20 2018 +0100
@@ -30,6 +30,7 @@
 from .. import (
     error,
     mdiff,
+    util,
 )
 
 # maximum <delta-chain-data>/<revision-text-length> ratio
@@ -688,11 +689,14 @@
 
 def _findsnapshots(revlog, cache, start_rev):
     """find snapshot from start_rev to tip"""
-    deltaparent = revlog.deltaparent
-    issnapshot = revlog.issnapshot
-    for rev in revlog.revs(start_rev):
-        if issnapshot(rev):
-            cache[deltaparent(rev)].append(rev)
+    if util.safehasattr(revlog.index, 'findsnapshots'):
+        revlog.index.findsnapshots(cache, start_rev)
+    else:
+        deltaparent = revlog.deltaparent
+        issnapshot = revlog.issnapshot
+        for rev in revlog.revs(start_rev):
+            if issnapshot(rev):
+                cache[deltaparent(rev)].append(rev)
 
 def _refinedgroups(revlog, p1, p2, cachedelta):
     good = None