Mercurial > hg-stable
changeset 44865:6493f0a567c2
nodemap: add a new mode option, with an optional "warn" value
When "warn" is set, user will get notified when the slow code, used for
compatibility is used. This can help people to detect situation were using that
feature will give them a slowdown instead of a speedup.
Differential Revision: https://phab.mercurial-scm.org/D8414
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 14 Apr 2020 02:45:05 +0200 |
parents | 97ebdb192b00 |
children | 6b01799e9db0 |
files | mercurial/configitems.py mercurial/localrepo.py mercurial/revlogutils/nodemap.py tests/test-persistent-nodemap.t |
diffstat | 4 files changed, 18 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/configitems.py Sun Apr 05 18:32:46 2020 +0200 +++ b/mercurial/configitems.py Tue Apr 14 02:45:05 2020 +0200 @@ -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(
--- a/mercurial/localrepo.py Sun Apr 05 18:32:46 2020 +0200 +++ b/mercurial/localrepo.py Tue Apr 14 02:45:05 2020 +0200 @@ -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
--- a/mercurial/revlogutils/nodemap.py Sun Apr 05 18:32:46 2020 +0200 +++ b/mercurial/revlogutils/nodemap.py Tue Apr 14 02:45:05 2020 +0200 @@ -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
--- a/tests/test-persistent-nodemap.t Sun Apr 05 18:32:46 2020 +0200 +++ b/tests/test-persistent-nodemap.t Tue Apr 14 02:45:05 2020 +0200 @@ -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