Subject: [PATCH/RFC v2 0/4] End-of-line normalization, take 2 (now only slightly scary)

From: Eyvind Bernhardsen <[email-masked]>
Date: Sat, 8 May 2010 23:46:17 +0200

Okay, here's a second shot at my end-of-line conversion sanification
series.  The main change is that instead of introducing a new attribute,
I've added a new mode to the "crlf" attribute: "crlf=auto".

The semantics of "crlf" have also been modified slightly in that the
attribute now enables end-of-line normalization whenever it is set,
instead of simply amending what happens when "core.autocrlf" is enabled
as it did before.

I think this version is a step in a direction that everyone can agree
on.  The new config variable seems to be a point of contention, but
while I'm not married to the name "core.eolStyle" by any means, I don't
think "core.crlf" explains what it is, and I don't think "input" and
"true" are good ways of describing what it does.

I agree with Linus that "crlf=input" seems crazy, and I agree with
Dmitry that "crlf" is a bad name for the attribute to begin with.  This
isn't bikeshedding: git has lost a lot of its sharp edges recently, but
this one remains, and is quite an important one for Windows users.

For now, though, I'd like the focus for this patch series to be creating
a mechanism that allows a project to enforce line ending normalization
for all contributors to the repository, while letting the user decide
what line endings he likes to see in his working directory.  If we end
up not shooting anybody in the head, all the better.

Thanks for all your inputs.  I was worried that nobody would even notice
this series :)  I've expanded the Cc list a bit, hope that's okay.

Eyvind Bernhardsen (4):
    Add "core.eolStyle" variable to control end-of-line conversion
    Add tests for per-repository eol normalization
    Pass eol conv mode as an argument instead of using global auto_crlf
    Add per-repository eol normalization

 Documentation/config.txt        |   11 ++-
 Documentation/gitattributes.txt |   71 +++++++++++-----
 Makefile                        |    3 +
 cache.h                         |   19 ++++
 config.c                        |   16 +++-
 convert.c                       |   52 +++++++++---
 environment.c                   |    1 +
 t/t0025-crlf-auto.sh            |  180 +++++++++++++++++++++++++++++++++++++++
 8 files changed, 317 insertions(+), 36 deletions(-)
 create mode 100755 t/t0025-crlf-auto.sh