Patchwork D8414: nodemap: add a new mode option, with an optional "warn" value

login
register
mail settings
Submitter phabricator
Date April 27, 2020, 5:18 p.m.
Message ID <d479d1fd01c8a4df87949107fa2b5ec7@localhost.localdomain>
Download mbox | patch
Permalink /patch/46241/
State Not Applicable
Headers show

Comments

phabricator - April 27, 2020, 5:18 p.m.
Herald added a subscriber: mercurial-patches.
marmoute updated this revision to Diff 21227.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D8414?vs=21092&id=21227

BRANCH
  default

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D8414/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D8414

AFFECTED FILES
  mercurial/configitems.py
  mercurial/localrepo.py
  mercurial/revlogutils/nodemap.py
  tests/test-persistent-nodemap.t

CHANGE DETAILS




To: marmoute, #hg-reviewers
Cc: mercurial-patches, pulkit, mercurial-devel

Patch

diff --git a/tests/test-persistent-nodemap.t b/tests/test-persistent-nodemap.t
--- a/tests/test-persistent-nodemap.t
+++ b/tests/test-persistent-nodemap.t
@@ -10,7 +10,9 @@ 
   > [devel]
   > persistent-nodemap=yes
   > EOF
-  $ hg debugbuilddag .+5000 --new-file
+  $ hg debugbuilddag .+5000 --new-file --config "experimental.exp-persistent-nodemap.mode=warn"
+  persistent nodemap in strict mode without efficient method (no-rust no-pure !)
+  persistent nodemap in strict mode without efficient method (no-rust no-pure !)
   $ hg debugnodemap --metadata
   uid: ???????????????? (glob)
   tip-rev: 5000
diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py
--- a/mercurial/revlogutils/nodemap.py
+++ b/mercurial/revlogutils/nodemap.py
@@ -13,6 +13,8 @@ 
 import re
 import struct
 
+from ..i18n import _
+
 from .. import (
     error,
     node as nodemod,
@@ -105,6 +107,9 @@ 
     def addabort(self, *args, **kwargs):
         pass
 
+    def _report(self, *args):
+        pass
+
 
 def update_persistent_nodemap(revlog):
     """update the persistent nodemap right now
@@ -138,6 +143,11 @@ 
     ondisk_docket = revlog._nodemap_docket
     feed_data = util.safehasattr(revlog.index, "update_nodemap_data")
     use_mmap = revlog.opener.options.get(b"exp-persistent-nodemap.mmap")
+    mode = revlog.opener.options.get(b"exp-persistent-nodemap.mode")
+    if not can_incremental:
+        msg = _(b"persistent nodemap in strict mode without efficient method")
+        if mode == b'warn':
+            tr._report(b"%s\n" % msg)
 
     data = None
     # first attemp an incremental update of the data
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -937,6 +937,8 @@ 
         options[b'exp-persistent-nodemap'] = True
     if ui.configbool(b'experimental', b'exp-persistent-nodemap.mmap'):
         options[b'exp-persistent-nodemap.mmap'] = True
+    epnm = ui.config(b'experimental', b'exp-persistent-nodemap.mode')
+    options[b'exp-persistent-nodemap.mode'] = epnm
     if ui.configbool(b'devel', b'persistent-nodemap'):
         options[b'devel-force-nodemap'] = True
 
diff --git a/mercurial/configitems.py b/mercurial/configitems.py
--- a/mercurial/configitems.py
+++ b/mercurial/configitems.py
@@ -681,6 +681,9 @@ 
     b'experimental', b'exp-persistent-nodemap.mmap', default=True,
 )
 coreconfigitem(
+    b'experimental', b'exp-persistent-nodemap.mode', default=b'compat',
+)
+coreconfigitem(
     b'experimental', b'server.filesdata.recommended-batch-size', default=50000,
 )
 coreconfigitem(