From patchwork Thu May 7 15:35:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D8414: nodemap: add a new mode option, with an optional "warn" value From: phabricator X-Patchwork-Id: 46273 Message-Id: <1535639d4f439aa8b621a6f844100463@localhost.localdomain> To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Thu, 7 May 2020 15:35:02 +0000 Closed by commit rHG6493f0a567c2: nodemap: add a new mode option, with an optional "warn" value (authored by marmoute). This revision was automatically updated to reflect the committed changes. This revision was not accepted when it landed; it landed in state "Needs Review". REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D8414?vs=21227&id=21290 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, Alphare Cc: mercurial-patches, pulkit, mercurial-devel 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(