# HG changeset patch # User Pierre-Yves David # Date 2021-02-10 22:03:54 # Node ID 8872e75ee9f4ad9465c756371feacc62487977d1 # Parent f22f663733e6fe335b1527347984bba892dde7f0 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 diff --git a/mercurial/helptext/config.txt b/mercurial/helptext/config.txt --- a/mercurial/helptext/config.txt +++ b/mercurial/helptext/config.txt @@ -1032,6 +1032,8 @@ Example ``.hg/hgrc``:: 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 diff --git a/mercurial/hook.py b/mercurial/hook.py --- a/mercurial/hook.py +++ b/mercurial/hook.py @@ -158,7 +158,10 @@ def _exthook(ui, repo, htype, name, cmd, 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: diff --git a/tests/test-hook.t b/tests/test-hook.t --- a/tests/test-hook.t +++ b/tests/test-hook.t @@ -1412,16 +1412,20 @@ HGPLAIN setting in hooks > pre-version.testing-yes:run-with-plain=yes > pre-version.testing-no=echo '### no ########' plain: \${HGPLAIN:-''} > pre-version.testing-no:run-with-plain=no + > pre-version.testing-auto=echo '### auto ######' plain: \${HGPLAIN:-''} + > pre-version.testing-auto:run-with-plain=auto > EOF $ (unset HGPLAIN; hg version --quiet) ### default ### plain: 1 ### yes ####### plain: 1 ### no ######## plain: + ### auto ###### plain: Mercurial Distributed SCM (*) (glob) $ HGPLAIN=1 hg version --quiet ### default ### plain: 1 ### yes ####### plain: 1 ### no ######## plain: + ### auto ###### plain: 1 Mercurial Distributed SCM (*) (glob)