hooks: add a `auto` value for `hooks.*run-with-plain` stable
authorPierre-Yves David <pierre-yves.david@octobus.net>
Wed, 10 Feb 2021 23:03:54 +0100
branchstable
changeset 46371 b910be772eb9
parent 46370 7289eac777ec
child 46372 ebc6d3484fdd
child 46546 d67732a4b58a
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
mercurial/helptext/config.txt
mercurial/hook.py
tests/test-hook.t
--- 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)