hooks: add a `auto` value for `hooks.*run-with-plain`
That setting restore the behavior pre-5.6. The current HGPLAIN value is simply
passed to the hooks.
This allow user who needs it to fully mitigate the behavior change introduced
in Mercurial 5.7 by restoring the older behavior.
Differential Revision: https://phab.mercurial-scm.org/D9982
--- a/mercurial/helptext/config.txt Wed Feb 10 23:21:21 2021 +0100
+++ b/mercurial/helptext/config.txt Wed Feb 10 23:03:54 2021 +0100
@@ -1032,6 +1032,8 @@
incoming.autobuild:run-with-plain = yes
# HGPLAIN never set
incoming.autobuild:run-with-plain = no
+ # HGPLAIN inherited from environment (default before Mercurila 5.7)
+ incoming.autobuild:run-with-plain = auto
Most hooks are run with environment variables set that give useful
additional information. For each hook below, the environment variables
--- a/mercurial/hook.py Wed Feb 10 23:21:21 2021 +0100
+++ b/mercurial/hook.py Wed Feb 10 23:03:54 2021 +0100
@@ -158,7 +158,10 @@
env[b'HG_HOOKTYPE'] = htype
env[b'HG_HOOKNAME'] = name
- plain = ui.configbool(b'hooks', b'%s:run-with-plain' % name)
+ if ui.config(b'hooks', b'%s:run-with-plain' % name) == b'auto':
+ plain = ui.plain()
+ else:
+ plain = ui.configbool(b'hooks', b'%s:run-with-plain' % name)
if plain:
env[b'HGPLAIN'] = b'1'
else:
--- a/tests/test-hook.t Wed Feb 10 23:21:21 2021 +0100
+++ b/tests/test-hook.t Wed Feb 10 23:03:54 2021 +0100
@@ -1412,16 +1412,20 @@
> pre-version.testing-yes:run-with-plain=yes
> pre-version.testing-no=echo '### no ########' plain: \${HGPLAIN:-'<unset>'}
> pre-version.testing-no:run-with-plain=no
+ > pre-version.testing-auto=echo '### auto ######' plain: \${HGPLAIN:-'<unset>'}
+ > pre-version.testing-auto:run-with-plain=auto
> EOF
$ (unset HGPLAIN; hg version --quiet)
### default ### plain: 1
### yes ####### plain: 1
### no ######## plain: <unset>
+ ### auto ###### plain: <unset>
Mercurial Distributed SCM (*) (glob)
$ HGPLAIN=1 hg version --quiet
### default ### plain: 1
### yes ####### plain: 1
### no ######## plain: <unset>
+ ### auto ###### plain: 1
Mercurial Distributed SCM (*) (glob)