threads / discuss / 44064

Gitattributes file is not respected when switching between branches

Subject: Gitattributes file is not respected when switching between branches

## tl;dr

5 messages between Sep 12, 2016 and Sep 18, 2016.

replies: 4people: 2as markdown or json

Виталий Ищенко· Sep 12, 2016, 12:55 UTC · lore
Good day

I faced following issue with gitattributes file (at least eol setting) when was trying to force `lf` mode on windows.

We have 2 branches: master & dev. With master set as HEAD in repository
I've added `.gitattributes` with following content to `dev` branch
```
* text eol=lf
```

Now when you clone this repo on other machine and checkout dev branch, eol setting is not respected. As a workaround you can rm all files except .git folder and do hard reset.

Issue is reproducible on windows & unix versions. Test repo can be found on github https://github.com/betalb/gitattributes-issue

master branch - one file without gitattributes feature-branch - .gitattributes added with eol=lf unix-feature-branch - .gitattributes added with eol=crlf

Thanks, Vitalii

Torsten Bögershausen· Sep 12, 2016, 19:35 UTC · re: Виталий Ищенко · lore

Re: Gitattributes file is not respected when switching between branches

On 12.09.16 14:55, Виталий Ищенко wrote:
Show 27 quoted lines
> Good day
>
> I faced following issue with gitattributes file (at least eol setting)
> when was trying to force `lf` mode on windows.
>
> We have 2 branches: master & dev. With master set as HEAD in repository
>
> I've added `.gitattributes` with following content to `dev` branch
>
> ```
> * text eol=lf
> ```
>
> Now when you clone this repo on other machine and checkout dev branch,
> eol setting is not respected.
> As a workaround you can rm all files except .git folder and do hard reset.
>
> Issue is reproducible on windows & unix versions. Test repo can be
> found on github
> https://github.com/betalb/gitattributes-issue
>
> master branch - one file without gitattributes
> feature-branch - .gitattributes added with eol=lf
> unix-feature-branch - .gitattributes added with eol=crlf
>
> Thanks,
> Vitalii
Some more information may be needed, to help to debug.

Which version of Git are you using ? What does

git ls-files --eol
say ?
Torsten Bögershausen· Sep 12, 2016, 19:42 UTC · re: Torsten Bögershausen · lore

Re: Gitattributes file is not respected when switching between branches

On 12.09.16 21:35, Torsten Bögershausen wrote:
Show 36 quoted lines
> On 12.09.16 14:55, Виталий Ищенко wrote:
>> Good day
>>
>> I faced following issue with gitattributes file (at least eol setting)
>> when was trying to force `lf` mode on windows.
>>
>> We have 2 branches: master & dev. With master set as HEAD in repository
>>
>> I've added `.gitattributes` with following content to `dev` branch
>>
>> ```
>> * text eol=lf
>> ```
>>
>> Now when you clone this repo on other machine and checkout dev branch,
>> eol setting is not respected.
>> As a workaround you can rm all files except .git folder and do hard reset.
>>
>> Issue is reproducible on windows & unix versions. Test repo can be
>> found on github
>> https://github.com/betalb/gitattributes-issue
>>
>> master branch - one file without gitattributes
>> feature-branch - .gitattributes added with eol=lf
>> unix-feature-branch - .gitattributes added with eol=crlf
>>
>> Thanks,
>> Vitalii
> Some more information may be needed, to help to debug.
>
> Which version of Git are you using ?
> What does
>
> git ls-files --eol
>
> say ?
Obs, All information was in the email.

tb@xxx:/tmp/gitattributes-issue> git ls-files --eol i/lf w/lf attr/ testfile-crlf.txt tb@xxx:/tmp/gitattributes-issue> ls -al total 8 drwxr-xr-x 4 tb wheel 136 Sep 12 21:38 . drwxrwxrwt 19 root wheel 646 Sep 12 21:38 .. drwxr-xr-x 13 tb wheel 442 Sep 12 21:38 .git -rw-r--r-- 1 tb wheel 60 Sep 12 21:38 testfile-crlf.txt tb@xxx:/tmp/gitattributes-issue>

Could it be that you didn't commit the file ".gitattributes" ? This could help: git add .gitattributes && git commit -m "Add .gitattributes"

Виталий Ищенко· Sep 16, 2016, 06:51 UTC · re: Torsten Bögershausen · lore

Re: Gitattributes file is not respected when switching between branches

Sorry for delay.

".gitattributes" indeed is not present in "master", but this is intentionally It is placed only in following 2 branches: feature-branch unix-feature-branch

This is how flow looks on windows $ git --version git version 2.9.3.windows.1

vitalii.ishchenko@DESKTOP-9TC9UPB MINGW64 /c/work/repos/gitattributes (master) $ git ls-files --eol i/lf w/crlf attr/ testfile-crlf.txt

vitalii.ishchenko@DESKTOP-9TC9UPB MINGW64 /c/work/repos/gitattributes (master) $ git checkout feature-branch Switched to branch 'feature-branch' Your branch is up-to-date with 'origin/feature-branch'.

vitalii.ishchenko@DESKTOP-9TC9UPB MINGW64 /c/work/repos/gitattributes (feature-branch) $ git ls-files --eol i/lf w/lf attr/text eol=lf .gitattributes i/lf w/crlf attr/text eol=lf testfile-crlf.txt

On Mon, Sep 12, 2016 at 10:42 PM, Torsten Bögershausen <tboegi@web.de> wrote:
Show 59 quoted lines
> On 12.09.16 21:35, Torsten Bögershausen wrote:
>> On 12.09.16 14:55, Виталий Ищенко wrote:
>>> Good day
>>>
>>> I faced following issue with gitattributes file (at least eol setting)
>>> when was trying to force `lf` mode on windows.
>>>
>>> We have 2 branches: master & dev. With master set as HEAD in repository
>>>
>>> I've added `.gitattributes` with following content to `dev` branch
>>>
>>> ```
>>> * text eol=lf
>>> ```
>>>
>>> Now when you clone this repo on other machine and checkout dev branch,
>>> eol setting is not respected.
>>> As a workaround you can rm all files except .git folder and do hard reset.
>>>
>>> Issue is reproducible on windows & unix versions. Test repo can be
>>> found on github
>>> https://github.com/betalb/gitattributes-issue
>>>
>>> master branch - one file without gitattributes
>>> feature-branch - .gitattributes added with eol=lf
>>> unix-feature-branch - .gitattributes added with eol=crlf
>>>
>>> Thanks,
>>> Vitalii
>> Some more information may be needed, to help to debug.
>>
>> Which version of Git are you using ?
>> What does
>>
>> git ls-files --eol
>>
>> say ?
> Obs, All information was in the email.
>
> tb@xxx:/tmp/gitattributes-issue> git ls-files --eol
> i/lf    w/lf    attr/                   testfile-crlf.txt
> tb@xxx:/tmp/gitattributes-issue> ls -al
> total 8
> drwxr-xr-x   4 tb    wheel  136 Sep 12 21:38 .
> drwxrwxrwt  19 root  wheel  646 Sep 12 21:38 ..
> drwxr-xr-x  13 tb    wheel  442 Sep 12 21:38 .git
> -rw-r--r--   1 tb    wheel   60 Sep 12 21:38 testfile-crlf.txt
> tb@xxx:/tmp/gitattributes-issue>
>
> Could it be that you didn't commit the file ".gitattributes" ?
> This could help:
> git add .gitattributes && git commit -m "Add .gitattributes"
>
>
>
>
>
>
>
Torsten Bögershausen· Sep 18, 2016, 19:31 UTC · re: Виталий Ищенко · lore

Re: Gitattributes file is not respected when switching between branches

On 16.09.16 08:51, Виталий Ищенко wrote:
> Sorry for delay.
> 
No problem about the delay.
(And please no top-posting)
If you say
> ".gitattributes" indeed is not present in "master", but this is intentionally
then nobody has (to my knowledge) thought about this situation/workflow yet.

The short version: Git is designed to have the same .gitattributes in different branches. At least not in the long run.

A typical use case is to create a repo, adjust the .gitattributes and keep this in all branches.

 

← back to recent threads