问题
We have this in our .gitattributes file:
* text=auto eol=lf
I'd like to precisely understand what this does.
The first part is text=auto
. From the documentation:
This ensures that all files that Git considers to be text will have normalized (LF) line endings in the repository.
The important part is that Git does the normalization only for files that it detects as text files.
However, I'm not sure about the eol=lf
part. I would think that it will also do the normalization only for text files but I can't find support for it in the documentation and we had an instance when our PNG files were normalized too, making them invalid.
Is there a settings like the above that would basically say "do the normalization in both directions for text files, and leave binary files alone"?
回答1:
Git 2.10 fixed this and now behaves as one would expect.
回答2:
The answer is no, Git currently (as of 2.3) cannot do checkout EOL conversion with auto-detection of binary and text formats so that it processes text only. The workaround is either to specify eol=lf
only for selected file types (e.g., *.txt
) or, inversely, mark certain file types as binary using e.g. *.png binary
).
Related: feature proposal on Git mailing list
* text=auto
This will correctly normalize text files in the repo. However, the second part (LF forcing on checkout) cannot be achieved easily today because adding
eol=lf
will unfortunately process binary files too. The only solution today is to mark certain types for conversion (e.g.,*.txt eol=lf
) or, inversely, mark certain types as binary (e.g.,*.png binary
).Both of these suffer from the same issue: the specific file types must be listed explicitly in the
.gitattributes
file, which means that either the types must be known ahead of time or all developers must remember to update the.gitattributes
file every time a new file type appears in the project. Which they won't.
来源:https://stackoverflow.com/questions/29435156/what-will-text-auto-eol-lf-in-gitattributes-do