marmoute created this revision. Herald added a reviewer: indygreg. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers.
REVISION SUMMARY Time to start defining the API and prepare the rust index support. We provide a method to do so. We use a distinct method instead of passing them in the constructor because we will need this method anyway later (to refresh the mmap once we update the data on disk). REPOSITORY rHG Mercurial 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 serialiazed data from 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 _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel