changeset 46493:b910be772eb9 stable

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
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 10 Feb 2021 23:03:54 +0100
parents 7289eac777ec
children d67732a4b58a ebc6d3484fdd
files mercurial/helptext/config.txt mercurial/hook.py tests/test-hook.t
diffstat 3 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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)