git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Torsten Bögershausen" <tboegi@web.de>
To: Alex Stangl <alex@stangl.us>, git@vger.kernel.org
Subject: Re: error: core.autocrlf=input conflicts with core.eol=crlf
Date: Fri, 05 Dec 2014 16:55:51 +0100	[thread overview]
Message-ID: <5481D587.2050103@web.de> (raw)
In-Reply-To: <54816863.90208@web.de>

On 12/05/2014 09:10 AM, Torsten Bögershausen wrote:
> On 05.12.14 06:42, Alex Stangl wrote:
>> Hi,
>>
>> There seems to be problems with the checks in the git code for conflicts
>> between config values of core.autocrlf and core.eol. Because the various
>> config files are read in separate passes, and the conflict check happens
>> on the fly, it creates a situation where the order of the config file
>> entries matters. This seems like a bug or at least a POLA violation --
>> ordering of lines within a section of a config file is not usually
>> significant.
>>
>> Example: User has core.autocrlf=input in his ~/.gitconfig. In his
>> project-level .git/config he wants to set core.autocrlf=false and
>> core.eol=crlf. If the core.autocrlf=false comes first, then all is
>> well and no conflict is reported. If the core.eol=crlf line comes
>> first, then at the time this line is getting parsed, core.autocrlf
>> is still set at "input" from ~/.gitconfig, and execution aborts:
>>
>> error: core.autocrlf=input conflicts with core.eol=crlf
>>
>> It seems like the conflict check should be made at the end of the
>> config file parsing, not on the fly. I was tempted to create a patch,
>> however I am unfamilar with the codebase, and didn't understand all
>> the places where the config file parsing is called, so I'm not sure
>> of the ramifications of any proposed change. A benefit of the current
>> approach is that it reports the line number where it aborted in the
>> config file. Trying to retain this and at the same time defer the
>> check until the end could get complicated.
>>
>> Besides interaction between multiple levels of config files, the
>> same sort of ordering issue can arise in conjunction with command-line
>> config overrides.
>>
>> Example: User has core.autocrlf=input in his project-level .git/config.
>> This command works fine:
>> $ git -c core.autocrlf=false -c core.eol=crlf status
>> This command blows up with conflict error:
>> $ git -c core.eol=crlf -c core.autocrlf=false status
>>
>> I tested with git versions 1.9.3 and 2.1.0.
>>
Yes, this is a bug, if someone has a patch: it is welcome.
Or a test case showing the problem is welcome too.

Beside that, I am working on a patch to remove this restriction completely.
I think that it is a legal combination to have a .gitattributes file like this:

*.txt text

And then set

core.autocrlf=input # to avoid CRLF in the repo for e.g. *.c files,
and core.eol=crlf # to have *.txt in CRLF in the working tree



Which means do not touch any files,

  parent reply	other threads:[~2014-12-05 15:56 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-05  5:42 error: core.autocrlf=input conflicts with core.eol=crlf Alex Stangl
     [not found] ` <54816863.90208@web.de>
2014-12-05 15:55   ` Torsten Bögershausen [this message]
2014-12-05 16:33     ` Alex Stangl

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=5481D587.2050103@web.de \
    --to=tboegi@web.de \
    --cc=alex@stangl.us \
    --cc=git@vger.kernel.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).