Commit 7f4f7ef3133 by Pierre-Yves David

nodemap: add a optional `nodemap_add_full` method on indexes

This method can be used to obtains persistent data for a full nodemap. The end
goal is for some index implementation to managed the nodemap serialization them
selves (eg: the rust implementation)

Differential Revision: https://phab.mercurial-scm.org/D7841
parent 6f9e8e142ce
......@@ -149,6 +149,13 @@ class PersistentNodeMapIndexObject(IndexObject):
through the dedicated `devel.persistent-nodemap` config.
"""
def nodemap_data_all(self):
"""Return bytes containing a full serialization of a nodemap
The nodemap should be valid for the full set of revisions in the
index."""
return nodemaputil.persistent_data(self)
class InlinedIndexObject(BaseIndexObject):
def __init__(self, data, inline=0):
......
......@@ -15,7 +15,7 @@ import struct
from .. import (
error,
node as nodemod,
pycompat,
util,
)
......@@ -69,7 +69,10 @@ def _persist_nodemap(tr, revlog):
if revlog.nodemap_file is None:
msg = "calling persist nodemap on a revlog without the feature enableb"
raise error.ProgrammingError(msg)
data = persistent_data(revlog.index)
if util.safehasattr(revlog.index, "nodemap_data_all"):
data = revlog.index.nodemap_data_all()
else:
data = persistent_data(revlog.index)
uid = _make_uid()
datafile = _rawdata_filepath(revlog, uid)
olds = _other_rawdata_filepath(revlog, uid)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment