D7847: nodemap: provide the on disk data to indexes who support it
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Fri Jan 31 10:31:51 EST 2020
marmoute updated this revision to Diff 19763.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D7847?vs=19430&id=19763
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D7847/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D7847
AFFECTED FILES
mercurial/pure/parsers.py
mercurial/revlog.py
CHANGE DETAILS
diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -626,6 +626,16 @@
self._io = rustrevlogio()
try:
d = self._io.parseindex(indexdata, self._inline)
+ index, _chunkcache = d
+ use_nodemap = (
+ not self._inline
+ and self.nodemap_file is not None
+ and util.safehasattr(index, 'update_nodemap_data')
+ )
+ if use_nodemap:
+ nodemap_data = nodemaputil.persisted_data(self)
+ if nodemap_data is not None:
+ index.update_nodemap_data(nodemap_data)
except (ValueError, IndexError):
raise error.RevlogError(
_(b"index %s is corrupted") % self.indexfile
diff --git a/mercurial/pure/parsers.py b/mercurial/pure/parsers.py
--- a/mercurial/pure/parsers.py
+++ b/mercurial/pure/parsers.py
@@ -156,6 +156,14 @@
index."""
return nodemaputil.persistent_data(self)
+ def update_nodemap_data(self, nm_data):
+ """provide full blokc of persisted binary data for a nodemap
+
+ The data are expected to come from disk. See `nodemap_data_all` for a
+ produceur of such data."""
+ if nm_data is not None:
+ nodemaputil.parse_data(nm_data)
+
class InlinedIndexObject(BaseIndexObject):
def __init__(self, data, inline=0):
To: marmoute, indygreg, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list