# HG changeset patch # User Danny Hooper # Date 1570284634 25200 # Node ID 808a57a0847005e7db3dc554bfcd3cbedde5eb40 # Parent c5c502bd1f707d99a3f58df7c9216291bd5fc0f1 fix: add :enabled sub-config for fixer tools This allows distributing opt-in fixer tool configurations in .hgrc files. This may be useful for adding default configs in core, or for orgranizations that want to provide configs to their users. Tools are still enabled by default because it would be confusing to add a config and find that it has no effect until you add enabled=true. Differential Revision: https://phab.mercurial-scm.org/D6975 diff -r c5c502bd1f70 -r 808a57a08470 hgext/fix.py --- a/hgext/fix.py Sat Oct 05 11:21:39 2019 -0400 +++ b/hgext/fix.py Sat Oct 05 07:10:34 2019 -0700 @@ -173,6 +173,7 @@ 'priority': 0, 'metadata': 'false', 'skipclean': 'true', + 'enabled': 'true', } for key, default in FIXER_ATTRS.items(): @@ -726,6 +727,7 @@ fixers[name]._priority = int(fixers[name]._priority) fixers[name]._metadata = stringutil.parsebool(fixers[name]._metadata) fixers[name]._skipclean = stringutil.parsebool(fixers[name]._skipclean) + fixers[name]._enabled = stringutil.parsebool(fixers[name]._enabled) # Don't use a fixer if it has no pattern configured. It would be # dangerous to let it affect all files. It would be pointless to let it # affect no files. There is no reasonable subset of files to use as the @@ -734,6 +736,9 @@ ui.warn( _('fixer tool has no pattern configuration: %s\n') % (name,)) del fixers[name] + elif not fixers[name]._enabled: + ui.debug('ignoring disabled fixer tool: %s\n' % (name,)) + del fixers[name] return collections.OrderedDict( sorted(fixers.items(), key=lambda item: item[1]._priority, reverse=True)) diff -r c5c502bd1f70 -r 808a57a08470 tests/test-fix.t --- a/tests/test-fix.t Sat Oct 05 11:21:39 2019 -0400 +++ b/tests/test-fix.t Sat Oct 05 07:10:34 2019 -0700 @@ -1341,6 +1341,22 @@ $ cd .. +Tools can be disabled. Disabled tools do nothing but print a debug message. + + $ hg init disabled + $ cd disabled + + $ printf "foo\n" > foo + $ hg add -q + $ hg fix --debug --working-dir --config "fix.disabled:command=echo fixed" \ + > --config "fix.disabled:pattern=foo" \ + > --config "fix.disabled:enabled=false" + ignoring disabled fixer tool: disabled + $ cat foo + foo + + $ cd .. + Test that we can configure a fixer to affect all files regardless of the cwd. The way we invoke matching must not prohibit this.