On 2015-04-06 20.05, Borek Bernard wrote: > Hi, > > I'd like to propose a new behavior around EOL normalization / forcing > using gitattributes. > > My use case is this: I want to ensure that LF line endings are used in > the repo *and* in all working directories, on all platforms (in our > case, the text files MUST be LF even on Windows). > > The first part is easy to achieve using this in a .gitattributes file: > > * 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. > > The simplest solution in my eyes would be just to change the behavior of > > * text=auto eol=lf > > to do both the checkin and checkout EOL conversions on *text files > only*, using the same text/binary detection algorithm that is already > in place for the checkin direction. This feels the most intuitive to > me and I think it would not be a breaking change. > > Related IRC discussion: > http://colabti.org/irclogger/irclogger_log/git?date=2015-04-04#l1143 > > Thoughts? > > Thanks, > Borek I think the suggestion makes sense. I could find 2 things that needs to be improved: - (1) Specifying "eol=lf" currently overwrites text=auto, this is in convert.c - (2) The .gitattributes file should overrule core.autocrlf. This is what the documentation says, but the code doesn't work like that. See convert.c, output_eol() - (3) we don't have test cases. I can probably contribute with 3) and may be 1), but the major work is to improve (or re-factor) the code in convert.c -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html