mercurial/localrepo.py
changeset 44791 b81486b609a3
parent 44788 6493f0a567c2
child 44792 5e3c718692bb
--- a/mercurial/localrepo.py	Tue Apr 14 03:05:54 2020 +0200
+++ b/mercurial/localrepo.py	Tue Apr 14 03:16:23 2020 +0200
@@ -445,6 +445,9 @@
 # copies related information in changeset's sidedata.
 COPIESSDC_REQUIREMENT = b'exp-copies-sidedata-changeset'
 
+# The repository use persistent nodemap for the changelog and the manifest.
+NODEMAP_REQUIREMENT = b'persistent-nodemap'
+
 # Functions receiving (ui, features) that extensions can register to impact
 # the ability to load repositories with custom requirements. Only
 # functions defined in loaded extensions are called.
@@ -933,7 +936,7 @@
 
     if ui.configbool(b'experimental', b'rust.index'):
         options[b'rust.index'] = True
-    if ui.configbool(b'experimental', b'exp-persistent-nodemap'):
+    if NODEMAP_REQUIREMENT in requirements:
         options[b'exp-persistent-nodemap'] = True
     if ui.configbool(b'experimental', b'exp-persistent-nodemap.mmap'):
         options[b'exp-persistent-nodemap.mmap'] = True
@@ -1023,6 +1026,7 @@
         REVLOGV2_REQUIREMENT,
         SIDEDATA_REQUIREMENT,
         SPARSEREVLOG_REQUIREMENT,
+        NODEMAP_REQUIREMENT,
         bookmarks.BOOKMARKS_IN_STORE_REQUIREMENT,
     }
     _basesupported = supportedformats | {
@@ -3660,6 +3664,9 @@
     if ui.configbool(b'format', b'bookmarks-in-store'):
         requirements.add(bookmarks.BOOKMARKS_IN_STORE_REQUIREMENT)
 
+    if ui.configbool(b'experimental', b'exp-persistent-nodemap'):
+        requirements.add(NODEMAP_REQUIREMENT)
+
     return requirements