From: hasen j <hasan.aljudy@gmail.com>
To: Avery Pennarun <apenwarr@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Eyvind Bernhardsen <eyvind.bernhardsen@gmail.com>,
Junio C Hamano <gitster@pobox.com>,
git@vger.kernel.org, kusmabite@googlemail.com, prohaska@zib.de
Subject: Re: [PATCH/RFC 0/3] Per-repository end-of-line normalization
Date: Fri, 7 May 2010 16:54:55 -0600 [thread overview]
Message-ID: <x2i600158c31005071554pdc399a46s1f97b1ddcd258d3e@mail.gmail.com> (raw)
In-Reply-To: <h2q32541b131005071534r22cc2092t2a21bfad6d4bfd81@mail.gmail.com>
> Part of the confusion comes from the way the options are currently
> declared. set vs. unset vs. unspecified vs. "input" vs. "auto" for an
> option named "crlf" is just very, very, unfriendly. None of the words
> *mean* anything.
>
> Maybe we should rethink this from the top. Imagine that we currently
> have no crlf options whatsoever. What *should* it look like? I
> suggest the following:
>
> Config:
> core.eolOverride = lf / crlf / auto / binary / input
> core.eolDefault = lf / crlf / auto / binary / input
>
> Attribute:
> eol = lf / crlf / auto / binary / input
>
> If eolOverride is not "auto" or unspecified, we ignore eolDefault or
> any attributes.
>
> If the attribute is not "auto" or unspecified, we ignore eolDefault.
>
> For all entries, unspecified is equivalent to "auto".
>
> Of course the eol attribute could be named "crlf", but that might not
> increase the sanity as much as we would like.
>
> And "input" means "auto, but strip CR when committing." Or maybe the
> problem is that it doesn't belong here at all: maybe it should be an
> entirely separate attribute that takes effect whenever the eol
> attribute/config resolves to "auto."
>
> Or maybe I'm just not thinking about it the right way?
>
> Avery
>
If we forget everything git has now, I would suggest the following:
- eol-normalization is per repository, per filetype (fnmatch filter)
- in a file separate from .git/config, such as .git/eol
- when you clone, you get this file
You specifies the 'standard' eol type for each file type in this project:
*.c lf
*.python lf
*.vb crlf
*.sln crlf
etc (something like that)
committing and checking-out always normalize line endings; *always*
add (and commit) can take an option to keep eol as-is (i.e.
--no-eol-normalization or --keep-eol or --raw-eol)
In this model:
1- Anyone who clones gets the repository eol settings
2- No one can possibly commit in a different eol style unless he
explicitly says he wants to.
3- Naturally, eol-normalization doesn't apply to binary files
#2 is important, it's needed so you won't have someone making bad
commits because he has a settings some where in his global config to
always ignore eol normalization.
on the other hand, one can alias 'add --raw-eol' to something like
'eviladd', so he can do 'git eviladd file.c', which is fine because
it's explicit.
This would get rid of issues where an editor (such as VS) saves a file
with mixed line endings: we don't care because we normalize them.
This would also make it more transparent to windows users: they don't
even have to think about eol issues; they can't make bad commits
"by-accident". (provided the repo maintainer has set the eol filters
properly).
I have no idea what happens (or should happen) if the origin repo
maintainer updates the .git/eol file. Maybe it should be .giteol
instead of .git/eol
next prev parent reply other threads:[~2010-05-07 22:55 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-05 10:01 What should be the CRLF policy when win + Linux? mat
2010-05-05 13:27 ` Ramkumar Ramachandra
2010-05-06 9:27 ` mat
2010-05-06 10:03 ` Erik Faye-Lund
2010-05-06 2:35 ` hasen j
2010-05-06 7:29 ` Wilbert van Dolleweerd
2010-05-06 15:34 ` hasen j
2010-05-06 17:15 ` Linus Torvalds
2010-05-06 17:26 ` Erik Faye-Lund
2010-05-06 20:00 ` hasen j
2010-05-06 20:23 ` Linus Torvalds
2010-05-06 20:40 ` Erik Faye-Lund
2010-05-06 22:14 ` hasen j
2010-05-06 23:25 ` Erik Faye-Lund
2010-05-18 15:13 ` Anthony W. Youngman
2010-05-06 22:27 ` [PATCH/RFC 0/3] Per-repository end-of-line normalization Eyvind Bernhardsen
2010-05-06 22:27 ` [PATCH/RFC 1/3] Add "auto-eol" attribute and "core.eolStyle" config variable Eyvind Bernhardsen
2010-05-06 22:27 ` [PATCH/RFC 2/3] Add tests for per-repository eol normalization Eyvind Bernhardsen
2010-05-06 22:27 ` [PATCH/RFC 3/3] Add " Eyvind Bernhardsen
2010-05-06 23:38 ` [PATCH/RFC 0/3] Per-repository end-of-line normalization Avery Pennarun
2010-05-06 23:54 ` Avery Pennarun
2010-05-07 8:45 ` Erik Faye-Lund
2010-05-07 16:33 ` Junio C Hamano
2010-05-07 16:57 ` Avery Pennarun
2010-05-07 17:10 ` Linus Torvalds
2010-05-07 19:02 ` Linus Torvalds
2010-05-07 19:11 ` Avery Pennarun
2010-05-07 19:16 ` Linus Torvalds
2010-05-07 19:35 ` Avery Pennarun
2010-05-07 19:45 ` Linus Torvalds
2010-05-07 19:58 ` Avery Pennarun
2010-05-07 20:06 ` Linus Torvalds
2010-05-07 20:17 ` Linus Torvalds
2010-05-07 20:42 ` Eyvind Bernhardsen
2010-05-07 20:57 ` Linus Torvalds
2010-05-07 21:17 ` Eyvind Bernhardsen
2010-05-07 21:23 ` Linus Torvalds
2010-05-07 21:30 ` Avery Pennarun
2010-05-07 21:37 ` Eyvind Bernhardsen
2010-05-07 21:58 ` Linus Torvalds
2010-05-07 21:54 ` Linus Torvalds
2010-05-07 22:14 ` Linus Torvalds
2010-05-07 22:34 ` Avery Pennarun
2010-05-07 22:54 ` hasen j [this message]
2010-05-07 23:18 ` Linus Torvalds
2010-05-07 23:47 ` hasen j
2010-05-07 23:50 ` Linus Torvalds
2010-05-08 0:19 ` hasen j
2010-05-08 0:33 ` Linus Torvalds
2010-05-08 1:39 ` hasen j
2010-05-08 1:49 ` Linus Torvalds
2010-05-08 2:49 ` hasen j
2010-05-08 3:31 ` Robert Buck
2010-05-08 3:45 ` Avery Pennarun
2010-05-08 10:36 ` hasen j
2010-05-08 11:36 ` Robert Buck
2010-05-08 3:34 ` Avery Pennarun
2010-05-08 0:31 ` Avery Pennarun
2010-05-07 22:19 ` Avery Pennarun
2010-05-08 20:49 ` Dmitry Potapov
2010-05-08 21:54 ` Linus Torvalds
2010-05-08 23:42 ` Dmitry Potapov
2010-05-09 7:49 ` Eyvind Bernhardsen
2010-05-09 10:35 ` Robert Buck
2010-05-07 20:58 ` Avery Pennarun
2010-05-07 19:23 ` Eyvind Bernhardsen
2010-05-07 19:31 ` Nicolas Pitre
2010-05-07 19:36 ` Avery Pennarun
2010-05-07 20:29 ` Nicolas Pitre
2010-05-07 21:00 ` Avery Pennarun
2010-05-07 21:12 ` Nicolas Pitre
2010-05-07 21:26 ` Avery Pennarun
2010-05-07 22:09 ` A Large Angry SCM
2010-05-07 22:10 ` Avery Pennarun
2010-05-07 19:40 ` Linus Torvalds
2010-05-07 20:32 ` Nicolas Pitre
2010-05-07 19:06 ` Junio C Hamano
2010-05-07 19:25 ` Eyvind Bernhardsen
2010-05-07 19:41 ` Finn Arne Gangstad
2010-05-07 20:06 ` Avery Pennarun
2010-05-07 20:11 ` Eyvind Bernhardsen
2010-05-07 7:15 ` What should be the CRLF policy when win + Linux? Gelonida
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=x2i600158c31005071554pdc399a46s1f97b1ddcd258d3e@mail.gmail.com \
--to=hasan.aljudy@gmail.com \
--cc=apenwarr@gmail.com \
--cc=eyvind.bernhardsen@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=kusmabite@googlemail.com \
--cc=prohaska@zib.de \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).