diff mbox series

.gitattributes: disable crlf translation

Message ID 20240523034935.195-1-peter0x44@disroot.org
State New
Headers show
Series .gitattributes: disable crlf translation | expand

Commit Message

Peter Damianov May 23, 2024, 3:49 a.m. UTC
By default, git has the "autocrlf" """feature""" enabled. This causes the files
to have CRLF line endings when checked out on windows, which in the case of
configure, causes confusing errors like:

./gcc/configure: line 14: $'\r': command not found
./gcc/configure: line 29: syntax error near unexpected token `newline'
'/gcc/configure: line 29: `     ;;

when it is invoked.

Any files damaged in this way can be fixed with:
$ git config core.autocrlf false
$ git reset
$ git checkout .

But, it's better to simply avoid this problem in the first place.
This behavior is never helpful or desired for gcc.

Signed-off-by: Peter Damianov <peter0x44@disroot.org>
---
 .gitattributes | 3 +++
 1 file changed, 3 insertions(+)

Comments

Richard Biener May 23, 2024, 12:01 p.m. UTC | #1
On Thu, May 23, 2024 at 5:50 AM Peter Damianov <peter0x44@disroot.org> wrote:
>
> By default, git has the "autocrlf" """feature""" enabled. This causes the files
> to have CRLF line endings when checked out on windows, which in the case of
> configure, causes confusing errors like:
>
> ./gcc/configure: line 14: $'\r': command not found
> ./gcc/configure: line 29: syntax error near unexpected token `newline'
> '/gcc/configure: line 29: `     ;;
>
> when it is invoked.
>
> Any files damaged in this way can be fixed with:
> $ git config core.autocrlf false
> $ git reset
> $ git checkout .
>
> But, it's better to simply avoid this problem in the first place.
> This behavior is never helpful or desired for gcc.

For files added/edited on Windows does this then also strip the \r
(upon which action?)?  Otherwise I think this looks good but I'm not
a git expert.

Richard.

> Signed-off-by: Peter Damianov <peter0x44@disroot.org>
> ---
>  .gitattributes | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/.gitattributes b/.gitattributes
> index e75bfc595bf..1e116987c98 100644
> --- a/.gitattributes
> +++ b/.gitattributes
> @@ -8,3 +8,6 @@ ChangeLog whitespace=indent-with-non-tab,space-before-tab,trailing-space
>  # Use together with git config diff.md.xfuncname '^\(define.*$'
>  # which is run by contrib/gcc-git-customization.sh too.
>  *.md diff=md
> +
> +# Disable lf -> crlf translation on windows.
> +* -crlf
> --
> 2.39.2
>
Peter Damianov May 24, 2024, 3:47 p.m. UTC | #2
On 2024-05-23 05:01, Richard Biener wrote:
> On Thu, May 23, 2024 at 5:50 AM Peter Damianov <peter0x44@disroot.org> 
> wrote:
>> 
>> By default, git has the "autocrlf" """feature""" enabled. This causes 
>> the files
>> to have CRLF line endings when checked out on windows, which in the 
>> case of
>> configure, causes confusing errors like:
>> 
>> ./gcc/configure: line 14: $'\r': command not found
>> ./gcc/configure: line 29: syntax error near unexpected token `newline'
>> '/gcc/configure: line 29: `     ;;
>> 
>> when it is invoked.
>> 
>> Any files damaged in this way can be fixed with:
>> $ git config core.autocrlf false
>> $ git reset
>> $ git checkout .
>> 
>> But, it's better to simply avoid this problem in the first place.
>> This behavior is never helpful or desired for gcc.
> 
> For files added/edited on Windows does this then also strip the \r
> (upon which action?)?  Otherwise I think this looks good but I'm not
> a git expert.
 From what I can tell, the \r doesn't get stripped from the files, but 
the commit itself acts as if it isn't there.
In the working directory, if an editor introduces a CRLF it remains, but 
any commits created won't include it.

I am finding the git documentation a bit confusing on this point though, 
so I'm not certain.
I'm far from a git export as well.

I checked and I couldn't find any CRLFs in gcc right now.
I tried the commands here:
https://git-scm.com/docs/gitattributes

$ git add --renormalize .
$ git status        # Show files that will be normalized

And git status showed no changes.

As far as I can tell, this change is okay. I would still feel more 
confident if others looked at it, though.

Thanks,
Peter D.
> 
> Richard.
> 
>> Signed-off-by: Peter Damianov <peter0x44@disroot.org>
>> ---
>>  .gitattributes | 3 +++
>>  1 file changed, 3 insertions(+)
>> 
>> diff --git a/.gitattributes b/.gitattributes
>> index e75bfc595bf..1e116987c98 100644
>> --- a/.gitattributes
>> +++ b/.gitattributes
>> @@ -8,3 +8,6 @@ ChangeLog 
>> whitespace=indent-with-non-tab,space-before-tab,trailing-space
>>  # Use together with git config diff.md.xfuncname '^\(define.*$'
>>  # which is run by contrib/gcc-git-customization.sh too.
>>  *.md diff=md
>> +
>> +# Disable lf -> crlf translation on windows.
>> +* -crlf
>> --
>> 2.39.2
>>
diff mbox series

Patch

diff --git a/.gitattributes b/.gitattributes
index e75bfc595bf..1e116987c98 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -8,3 +8,6 @@  ChangeLog whitespace=indent-with-non-tab,space-before-tab,trailing-space
 # Use together with git config diff.md.xfuncname '^\(define.*$'
 # which is run by contrib/gcc-git-customization.sh too.
 *.md diff=md
+
+# Disable lf -> crlf translation on windows.
+* -crlf