Subject: Re: Surprising interaction of "binary" and "eol" gitattributes

From: Johannes Sixt <[email-masked]>
Date: Wed, 11 Mar 2015 21:30:47 +0100

Am 10.03.2015 um 23:54 schrieb Junio C Hamano:
> Michael Haggerty <[email-masked]> writes:
>
>> 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 would say former.  You find out what attributes apply to a path
> and then consider the collective effect of these attributes that
> survived.
>
> So the second "No it is not text" which is overruled by the "oops,
> no that is text" later should not get in the picture, I would say.
>
> As binary is not just -text and turns other things off, those other
> things will be off after these three.

Is that how attribute lookup works? I.e., given a path, all attributes 
are collected?

Isn't it more like: Here we are interested in the "eol" attribute of 
this file named "a.foo". And the lookup would find the first line that 
says "eol=crlf". Elsewhere, we are interested in the "binary" attribute 
of the file named "a.foo", and lookup would find the second line that 
sets the "binary" attribute. And again elsewhere, we ask for the "text" 
attribute, and we find the last line that sets the "text" property.

Am I totally off track?

-- Hannes