Subject: Re: [PATCH] Makefile(s): avoid recipe prefix in conditional statements

From: Junio C Hamano <[email-masked]>
Date: Mon, 08 Apr 2024 16:28:24 -0700

Junio C Hamano <[email-masked]> writes:

> Taylor Blau <[email-masked]> writes:
>
>> When a conditional word (ifeq, ifneq, ifdef, etc.) is preceded by one or
>> more tab characters, replace each tab character with 8 space characters
>> with the following:
>>
>>     find . -type f -not -path './.git/*' -name Makefile -or -name '*.mak' |
>>       xargs perl -i -pe '
>>         s/(\t+)(ifn?eq|ifn?def|else|endif)/" " x (length($1) * 8) . $2/ge unless /\\$/
>>       '
>
> Yuck, it means auto indenting Makefile and its pieces almost
> impossible X-<.  I'll take the patch as there is no way to revert
> the change to GNU make, though.

We'd need something like this on top.  Our top-level .gitattributes
defines the default whitespace rules with !indent-with-non-tab and
enables indent-with-non-tab for specific file suffixes like .[ch],
but git-gui/.gitattributes enforces indent-with-non-tab for all
files.

Another thing with this series (and this follow-up) is if we want to
start treating git-gui/ as just a subdirectory without no plan to
feed our changes to the "upstream".  I am actually OK with that, as
the "upstream" we merge (with -Xsubtree merge strategy) from does
not seem to be very active and responsive these days.

 git-gui/.gitattributes | 1 +
 1 file changed, 1 insertion(+)

diff --git c/git-gui/.gitattributes w/git-gui/.gitattributes
index 59cd41dbff..118d56cfbd 100644
--- c/git-gui/.gitattributes
+++ w/git-gui/.gitattributes
@@ -3,3 +3,4 @@
 git-gui.sh  encoding=UTF-8
 /po/*.po    encoding=UTF-8
 /GIT-VERSION-GEN eol=lf
+Makefile    whitespace=!indent,trail,space