persistent-nodemap: add a revlog.storage.persistent-nodemap.slow-path option
authorPierre-Yves David <pierre-yves.david@octobus.net>
Thu, 14 Jan 2021 01:25:06 +0100
changeset 46308 05a1e44b2224
parent 46307 51da7c8ef357
child 46309 2c9c88879ab7
persistent-nodemap: add a revlog.storage.persistent-nodemap.slow-path option As discussed during the sprint, we want to prevent user to get an unexpected performance regression when accessing a repository using "persistent-nodemap" without the associated Rust extension. We start by adding a config declaration and some documentation. Since "allow" is the current behavior, we don't need to add any code. The option possible value will come later. Note that we already have a `storage.revlog.nodemap.mode` option, but that option is a bit different. It does some warning and checking at revlog instantiation time. While we want something done at requirements checking time. Since we plan for new names and new config value names, we introduce a new option and will drop the old one later. Differential Revision: https://phab.mercurial-scm.org/D9758
mercurial/configitems.py
mercurial/helptext/config.txt
--- a/mercurial/configitems.py	Thu Jan 14 01:12:42 2021 +0100
+++ b/mercurial/configitems.py	Thu Jan 14 01:25:06 2021 +0100
@@ -1793,6 +1793,14 @@
 coreconfigitem(
     b'storage', b'revlog.nodemap.mode', default=b'compat', experimental=True
 )
+# experimental as long as format.use-persistent-nodemap is.
+coreconfigitem(
+    b'storage',
+    b'revlog.persistent-nodemap.slow-path',
+    default=b"allow",
+    experimental=True,
+)
+
 coreconfigitem(
     b'storage',
     b'revlog.reuse-external-delta',
--- a/mercurial/helptext/config.txt	Thu Jan 14 01:12:42 2021 +0100
+++ b/mercurial/helptext/config.txt	Thu Jan 14 01:25:06 2021 +0100
@@ -1953,6 +1953,18 @@
     For details on the "persistent-nodemap" feature, see:
     :hg:`help config format.use-persistent-nodemap`.
 
+``revlog.persistent-nodemap.slow-path``
+    Control the behavior of Merucrial when using a repository with "persistent"
+    nodemap with an installation of Mercurial without a fast implementation for
+    the feature:
+
+    ``allow``: Silently use the slower implementation to access the repository.
+
+    Default to "allow"
+
+    For details on the "persistent-nodemap" feature, see:
+    :hg:`help config format.use-persistent-nodemap`.
+
 ``revlog.reuse-external-delta-parent``
     Control the order in which delta parents are considered when adding new
     revisions from an external source.