# git status internals and line endings

6 messages from 2009-11-12 to 2009-11-13. Participants: Marc Strapetz, Jeff King, Erik Faye-Lund, Peter Krefting.
Thread: https://gitlist.dev/t/21597

## Marc Strapetz, 2009-11-12 20:32

Subject: git status internals and line endings
Message-ID: <4AFC70CE.5020106@syntevo.com>
URL: https://gitlist.dev/e/4AFC70CE.5020106%40syntevo.com

```
I'm trying to figure out under which circumstances changes in line
endings are resulting in 'modified' status (resp. will be committed). I
have three files with the same content, differing only in line endings:

- file1 is committed with CRLF and has LF in working tree
- file2 is committed with CRLF and has CRLF in working tree
- file3 is committed with LF and has CRLF in working tree

On Linux, file1 and file3 are reported as modified -- as I would expect.
The surprise is on Windows: here only file1 is reported as modified. Why
not file3? Btw, 'git hash-object file3' reports the same SHA as for the
LF-only content in the repository (not so on Linux, as expected).

Is this some special handling on Windows (and possibly on Mac OS)? In
this case, can someone please point me to the corresponding code part?
Thanks for any comments regarding this topic.

--
Best regards,
Marc Strapetz
=============
syntevo GmbH
http://www.syntevo.com
http://blog.syntevo.com

```

## Jeff King, 2009-11-13 00:15

Subject: Re: git status internals and line endings
Message-ID: <20091113001547.GB28836@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20091113001547.GB28836%40sigill.intra.peff.net
In-Reply-To: <4AFC70CE.5020106@syntevo.com>

```
On Thu, Nov 12, 2009 at 09:32:14PM +0100, Marc Strapetz wrote:

> On Linux, file1 and file3 are reported as modified -- as I would expect.
> The surprise is on Windows: here only file1 is reported as modified. Why
> not file3? Btw, 'git hash-object file3' reports the same SHA as for the
> LF-only content in the repository (not so on Linux, as expected).
> 
> Is this some special handling on Windows (and possibly on Mac OS)? In
> this case, can someone please point me to the corresponding code part?
> Thanks for any comments regarding this topic.

Sounds like the core.autocrlf setting (see "git help config"), which I
believe is set by default on Windows.

-Peff

```

## Marc Strapetz, 2009-11-13 08:08

Subject: Re: git status internals and line endings
Message-ID: <4AFD1414.6030907@syntevo.com>
URL: https://gitlist.dev/e/4AFD1414.6030907%40syntevo.com
In-Reply-To: <20091113001547.GB28836@sigill.intra.peff.net>

```
> Sounds like the core.autocrlf setting (see "git help config"), which I
> believe is set by default on Windows.

I have checked both $GIT_DIR/config and ~/.gitconfig and autocrlf has
not been set. I have then set autocrlf = false for the Windows
repository and still the file didn't show up as modified. On Linux, I've
added autocrlf = true (resp. autocrlf = input) for the repository and
still the file shows up as modified. Not that I don't like this
behavior, but I don't understand it :) Windows Git version is 1.6.5.1,
Linux version is 1.6.3.3.

--
Best regards,
Marc Strapetz
=============
syntevo GmbH
http://www.syntevo.com
http://blog.syntevo.com





Jeff King wrote:
> On Thu, Nov 12, 2009 at 09:32:14PM +0100, Marc Strapetz wrote:
> 
>> On Linux, file1 and file3 are reported as modified -- as I would expect.
>> The surprise is on Windows: here only file1 is reported as modified. Why
>> not file3? Btw, 'git hash-object file3' reports the same SHA as for the
>> LF-only content in the repository (not so on Linux, as expected).
>>
>> Is this some special handling on Windows (and possibly on Mac OS)? In
>> this case, can someone please point me to the corresponding code part?
>> Thanks for any comments regarding this topic.
> 
> Sounds like the core.autocrlf setting (see "git help config"), which I
> believe is set by default on Windows.
> 
> -Peff
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 

```

## Erik Faye-Lund, 2009-11-13 09:04

Subject: Re: git status internals and line endings
Message-ID: <40aa078e0911130104v6acdecedxf629c5ef35a62740@mail.gmail.com>
URL: https://gitlist.dev/e/40aa078e0911130104v6acdecedxf629c5ef35a62740%40mail.gmail.com
In-Reply-To: <4AFD1414.6030907@syntevo.com>

```
On Fri, Nov 13, 2009 at 9:08 AM, Marc Strapetz
<marc.strapetz@syntevo.com> wrote:
>> Sounds like the core.autocrlf setting (see "git help config"), which I
>> believe is set by default on Windows.
>
> I have checked both $GIT_DIR/config and ~/.gitconfig and autocrlf has
> not been set. I have then set autocrlf = false for the Windows
> repository and still the file didn't show up as modified. On Linux, I've
> added autocrlf = true (resp. autocrlf = input) for the repository and
> still the file shows up as modified. Not that I don't like this
> behavior, but I don't understand it :) Windows Git version is 1.6.5.1,
> Linux version is 1.6.3.3.
>

In order to make changes to core.autocrlf effective, you need to
delete .git/index and perform a hard reset:
$ rm .git/index
$ git reset --hard

Did you do this before checking if the files were modified?

-- 
Erik "kusma" Faye-Lund

```

## Peter Krefting, 2009-11-13 09:40

Subject: Re: git status internals and line endings
Message-ID: <alpine.DEB.2.00.0911131039130.11302@ds9.cixit.se>
URL: https://gitlist.dev/e/alpine.DEB.2.00.0911131039130.11302%40ds9.cixit.se
In-Reply-To: <4AFD1414.6030907@syntevo.com>

```
Marc Strapetz:

>> Sounds like the core.autocrlf setting (see "git help config"), which I 
>> believe is set by default on Windows.

> I have checked both $GIT_DIR/config and ~/.gitconfig and autocrlf has not 
> been set.

It is usually set by default by the installer. Look at 
%INSTALLDIR%\etc\gitconfig, it should contain

   [core]
    autoCRLF = true

among other things.

-- 
\\// Peter - http://www.softwolves.pp.se/

```

## Marc Strapetz, 2009-11-13 11:01

Subject: Re: git status internals and line endings
Message-ID: <4AFD3C6D.3010008@syntevo.com>
URL: https://gitlist.dev/e/4AFD3C6D.3010008%40syntevo.com
In-Reply-To: <40aa078e0911130104v6acdecedxf629c5ef35a62740@mail.gmail.com>

```
> In order to make changes to core.autocrlf effective, you need to
> delete .git/index and perform a hard reset:
> $ rm .git/index
> $ git reset --hard

This solved my problem. Thank you!

--
Best regards,
Marc Strapetz
=============
syntevo GmbH
http://www.syntevo.com
http://blog.syntevo.com



Erik Faye-Lund wrote:
> On Fri, Nov 13, 2009 at 9:08 AM, Marc Strapetz
> <marc.strapetz@syntevo.com> wrote:
>>> Sounds like the core.autocrlf setting (see "git help config"), which I
>>> believe is set by default on Windows.
>> I have checked both $GIT_DIR/config and ~/.gitconfig and autocrlf has
>> not been set. I have then set autocrlf = false for the Windows
>> repository and still the file didn't show up as modified. On Linux, I've
>> added autocrlf = true (resp. autocrlf = input) for the repository and
>> still the file shows up as modified. Not that I don't like this
>> behavior, but I don't understand it :) Windows Git version is 1.6.5.1,
>> Linux version is 1.6.3.3.
>>
> 
> In order to make changes to core.autocrlf effective, you need to
> delete .git/index and perform a hard reset:
> $ rm .git/index
> $ git reset --hard
> 
> Did you do this before checking if the files were modified?
> 

```
