On 03/10/2015 09:01 PM, Junio C Hamano wrote: > Michael Haggerty <mhagger@xxxxxxxxxxxx> writes: >> [...] >> It seems to me that setting "text=auto" should mean that Git uses its >> heuristic to guess whether a particular file is text or not, and then >> treats the file as if it had "text" or "-text" set. If the latter, then >> EOL translation should be suppressed. > > ... I think this makes even more sense. I do not think the code is > set up to do so. To be honest, eol_attr thing introduced in > fd6cce9e (Add per-repository eol normalization, 2010-05-19) always > confuses me whenever I follow this codepath. Would this change be "backwards-compatible enough" that it can be made without waiting for Git 3.0? >> It also seems to me that "binary" should imply "-eol". > > I thought that "eol" attribute is not even looked at when you say > "binary"; that is what I recall finding out when I dug into this > earlier in the thread. Well, that's true, but the "eol" attribute can regain its effect if "binary" is followed by "text" or "text=auto". So I guess the simplest question is as follows. Suppose I have the following .gitattributes: a.foo eol=crlf a.foo binary a.foo text It is obvious in this case that a.foo should be treated as a text file. Should it be processed with "eol=crlf", or should the intervening "binary" imply "-eol"? I guess it would be more natural to process it with "eol=crlf". So I withdraw my proposal that "binary" should imply "-eol", provided the first change (that "text=auto" is treated the same as "-text" for binary files) is implemented. So I guess the proposed new behavior WRT these attributes is: * "text" determines whether a file should be subject to EOL translation. * "text=auto" has the same effect as "text" or "-text", depending on the outcome of the binary detection heuristic; in particular, it causes EOL translation to be suppressed for files determined to be binary. * "eol" determines what EOLs should be translated to *if* the file is determined to be a text file. * If "text" is unspecified but "eol" is specified, then do EOL translation without a heuristic check. But I still have to work out how core.autocrlf and the "crlf" attribute fit into all this. Michael -- Michael Haggerty mhagger@xxxxxxxxxxxx -- 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