mercurial/revlogutils/deltas.py
changeset 40709 39d29542fe40
parent 40657 2eb48aa0acce
child 40957 f960c51eebf3
--- a/mercurial/revlogutils/deltas.py	Thu Nov 15 11:10:52 2018 +0100
+++ b/mercurial/revlogutils/deltas.py	Thu Nov 15 11:11:38 2018 +0100
@@ -44,6 +44,7 @@
         self._srdensitythreshold = density
         self._srmingapsize = mingap
         self._snapshot = set(snapshot)
+        self.index = None
 
     def start(self, rev):
         if rev == 0:
@@ -120,9 +121,12 @@
         targetsize = max(targetsize, revlog._srmingapsize)
     # targetsize should not be specified when evaluating delta candidates:
     # * targetsize is used to ensure we stay within specification when reading,
-    for chunk in _slicechunktodensity(revlog, revs,
-                                      revlog._srdensitythreshold,
-                                      revlog._srmingapsize):
+    densityslicing = getattr(revlog.index, 'slicechunktodensity', None)
+    if densityslicing is None:
+        densityslicing = lambda x, y, z: _slicechunktodensity(revlog, x, y, z)
+    for chunk in densityslicing(revs,
+                                revlog._srdensitythreshold,
+                                revlog._srmingapsize):
         for subchunk in _slicechunktosize(revlog, chunk, targetsize):
             yield subchunk