Override .gitattributes text=auto in Windows
Asked Answered
S

2

9

This is pretty unintuitive:

C:\python-tdl\examples\termbox>git config core.autocrlf
false

C:\python-tdl\examples\termbox>git commit termbox.py
warning: LF will be replaced by CRLF in examples/termbox/termbox.py.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in examples/termbox/termbox.py.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in examples/termbox/termbox.py.
The file will have its original line endings in your working directory.
Aborting commit due to empty commit message.

According to various media with core.autocrlf=false there should be no linefeed conversion at all.

In project root I discovered .gitattributes with the line:

# Auto detect text files and perform LF normalization
* text=auto

If I comment it, the warning goes away. The question - how can I override this .gitattibutes setting automatically?

Stenosis answered 22/6, 2015 at 11:22 Comment(0)
B
8

.gitattributes overrides all config settings, so it really can't be overridden; it is the "overrider," so to speak. While you can simply remove the line, this will cause inconsistent behavior on other developers' machines if they have core.autocrlf=true. So the best bet would be to add the following line to .gitattributes: * -text. This will disable CRLF processing for all files.

Bubalo answered 22/6, 2015 at 11:37 Comment(4)
It would be nice if GIT has some option to turn EOL conversion off completely regardless of the .gitattributes file. In my case the .gitattributes file is maintained by RE and I can't change it but I absolutely want to have all files on my PC with just LF.Rapallo
Thanks so much. I've spent ages battling with a fast-export that had * text=auto set. This did the trick. I'd up-vote 10 times if I could!Camphor
@AndreiLED you can override this per repo, by editing/adding .git/info/attributes. The order of precedence is global config -> .gitattributes in the dir -> .git/info/attributes (i.e. the latter takes highest preference and overrides the others). Reference here: git-scm.com/docs/gitattributesCamphor
Thanks, I will give it a try. Though, I already achieved the desired effect by setting core.eol to lf.Rapallo
A
7

At least in modern versions of git, .git/info/attributes (or $GIT_DIR/info/attributes) overrides .gitattributes for local configuration.

Use * !text to use the value of core.autocrlf, or * -text to force no conversion.

See the documentation for gitattributes and the text attribute.

Also note: core.eol, the eol attribute

Aquamarine answered 20/6, 2018 at 14:40 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.