Mercurial > hg-stable
changeset 44017:8042856c90b6
rust-index: add a `experimental.rust.index` option to use the wrapper
Now we can start putting this wrapper on the test and benchmark grill.
Differential Revision: https://phab.mercurial-scm.org/D7660
author | Georges Racinet <georges.racinet@octobus.net> |
---|---|
date | Thu, 12 Dec 2019 18:31:17 +0100 |
parents | 992f0d6e7f33 |
children | 1e0783b946c8 |
files | mercurial/configitems.py mercurial/localrepo.py mercurial/revlog.py |
diffstat | 3 files changed, 15 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/configitems.py Wed Dec 11 18:10:20 2019 +0100 +++ b/mercurial/configitems.py Thu Dec 12 18:31:17 2019 +0100 @@ -657,6 +657,9 @@ b'experimental', b'revisions.disambiguatewithin', default=None, ) coreconfigitem( + b'experimental', b'rust.index', default=False, +) +coreconfigitem( b'experimental', b'server.filesdata.recommended-batch-size', default=50000, ) coreconfigitem(
--- a/mercurial/localrepo.py Wed Dec 11 18:10:20 2019 +0100 +++ b/mercurial/localrepo.py Thu Dec 12 18:31:17 2019 +0100 @@ -927,6 +927,9 @@ if repository.NARROW_REQUIREMENT in requirements: options[b'enableellipsis'] = True + if ui.configbool('experimental', 'rust.index'): + options[b'rust.index'] = True + return options
--- 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: