--- a/mercurial/revlog.py Wed Dec 11 18:10:20 2019 +0100
+++ b/mercurial/revlog.py Thu Dec 12 18:31:17 2019 +0100
@@ -106,6 +106,7 @@
parsers = policy.importmod('parsers')
rustancestor = policy.importrust('ancestor')
rustdagop = policy.importrust('dagop')
+rustrevlog = policy.importrust('revlog')
# Aliased for performance.
_zlibdecompress = zlib.decompress
@@ -351,6 +352,12 @@
return p
+class rustrevlogio(revlogio):
+ def parseindex(self, data, inline):
+ index, cache = super(rustrevlogio, self).parseindex(data, inline)
+ return rustrevlog.MixedIndex(index), cache
+
+
class revlog(object):
"""
the underlying revision storage object
@@ -585,6 +592,8 @@
self._storedeltachains = True
self._io = revlogio()
+ if rustrevlog is not None and self.opener.options.get('rust.index'):
+ self._io = rustrevlogio()
if self.version == REVLOGV0:
self._io = revlogoldio()
try: