All of lore.kernel.org
 help / color / mirror / Atom feed
* EOL conversion on checkout for text files only
@ 2015-04-06 18:05 Borek Bernard
  2015-04-07  8:47 ` Torsten Bögershausen
  0 siblings, 1 reply; 2+ messages in thread
From: Borek Bernard @ 2015-04-06 18:05 UTC (permalink / raw)
  To: git

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: EOL conversion on checkout for text files only
  2015-04-06 18:05 EOL conversion on checkout for text files only Borek Bernard
@ 2015-04-07  8:47 ` Torsten Bögershausen
  0 siblings, 0 replies; 2+ messages in thread
From: Torsten Bögershausen @ 2015-04-07  8:47 UTC (permalink / raw)
  To: Borek Bernard, git

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



 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-04-07  8:48 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-06 18:05 EOL conversion on checkout for text files only Borek Bernard
2015-04-07  8:47 ` Torsten Bögershausen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.