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
--- 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.