--- 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