Re: [PATCH v2 0/2] Improvements to tests and docs for .gitattributes eol
- From
Torsten B��gershausen <tboegi@web.de>
- Date
- Feb 16, 2022, 11:52 UTC
- Message-ID
- <20220216115239.uo2ie3flaqo3nf2d@tb-raspi4>
- In-Reply-To
- <YgzRyKZwsPw6rTyT@camp.crustytoothpaste.net>
On Wed, Feb 16, 2022 at 10:28:24AM +0000, brian m. carlson wrote:
Show 20 quoted lines
> On 2022-02-16 at 07:00:24, Johannes Sixt wrote: > > Just so you know where my confusion arises from: Your updated text has > > the structure (as I read it) > > > > if ... set or unspecified or if auto then ... detected ... and LF > > > > It is unclear whether the 'then' conditions apply only to 'if auto'. > > Even if the additional 'if' in the middle makes me think that the > > 'then's apply only to the 'auto' case, it is sufficently vage because in > > my mental model there is not much difference between an 'unset' and a > > set-to-'auto' attribute, and I wonder why the 'then's should not apply > > to the 'unset' case as well. > > > > Moreover, after re-reading the text, I notice that text may be read as > > "this attribute has an effect only if <conditions>" where <conditions> > > basically means "always except for when the 'if auto' case is not met", > > right? Would it perhaps be better to write "has no effect if <very > > specific condition>"? > > The situation is that eol is in effect if and only if:
Well written
Show 12 quoted lines
> > * text is set; > * text is unspecified; or > * text is auto, the file is detected as text, and the file has LF line > endings in the index. > > Alternately, it has no effect if and only if: > > * text is unset; > * text is auto and the file is detected as binary; or > * text is auto and the file is detected as text and has CRLF line > endings.
... CRLF line endings in the index.
^^^^^^^^^^^^One of the reasons that the eol attribute is not 100% well-specified is that people should use the eol attribute together with text.
Either text=auto eol=crlf or text=auto eol=lf or text eol=crlf or text eol=lf
Older git versions did treat * text=auto * eol=crlf
The same as * text eol=crlf Which did corrupt binary files.
Never git versions treat * text=auto * eol=crlf as * text=auto eol=crlf in the sense that only auto-detected text files are converted, if they had not been commited with crlf before.
In that sense I feel that the short form eol=crlf should be avoided
Show 7 quoted lines
> > I'm not sure one reads significantly easier than the other. I slightly > prefer the former because it has fewer conditions with multiple nested > entries, though. > -- > brian m. carlson (he/him or they/them) > Toronto, Ontario, CA