Michael Haggerty <mhagger@xxxxxxxxxxxx> writes: > On 03/06/2015 10:30 PM, Torsten Bögershausen wrote: >> >>> Oops, I misunderstood an internal bug report. In seems that it is the >>> following scenario that is incorrect: >>> >>> *.png text=auto eol=crlf >> Hm, I don't know if we support this combination at all. > > The user can specify this combination in a .gitattributes file and we > have to react to it *some way*. > > Theoretically we could document that > this combination is undefined and/or emit an error if we see this > combination, but we don't do so. > >> The current logic supports auto-detection of text/binary, >> * text=auto >> (the files will get the line ending from core.eol or core.autocrlf) >> >> or the the setting of a line ending: >> *.sh eol=lf >> *.bat eol=crlf >> >> >> Is there a special use-case, which needs the combination of both ? > > I'm still trying to infer the spirit of the current behavior, so caveats > here. > > This comes from a real-life scenario where a user, somewhere early in > .gitattributes, had > > * text > * eol=crlf > > and then later (this could be in a subdirectory) tried to carve out > exceptions to this rule by using > > *.png binary > * text=auto > > Intuitively it *feels* like either of the later lines should suppress > EOL translation in PNG files (assuming the PNG file has a NUL byte in > the first 8k, which this one did). The way I read the description of "eol" was that that was a more specific way to do what used to be done with "text" (meaning "OK, that may be a text file, but how exactly is the end-of-line handled?"), so I would say if the above behaved the same way as *.png eol=crlf text that would be the least surprising to me. But perhaps that is only because I know which one came first and which one came later for what purpose. But ... > 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. > 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. http://thread.gmane.org/gmane.comp.version-control.git/264850/focus=264872 -- 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