git/list[1] front-page[2] threads[3] people[4] search[5] about
 

wrong handling of text git attribute leading to files incorrectly reported as modified

From
FAFrank Ammeter <git@ammeter.ch>
Date
Apr 11, 2014, 20:20 UTC
Message-ID
<E8A9F28E-FF68-4899-B02C-DB7A2C66F38A@ammeter.ch>

I’m not a git expert and this might be the wrong place to ask this question, so please send me somewhere else if I’m in the wrong place.

I asked the same question on stack overflow, but didn’t get any response: http://stackoverflow.com/questions/22823004/files-incorrectly-reported-modified-git-attributes-buggy-leading-to-inconsist

If a file is committed with crlf line endings with the text attribute unset in the working tree, but the text attribute is set in the repo, the file will be incorrectly shown as modified - for all users checking out the file. Resetting or manually modifying the file will not help - The only remedy is to commit the .gitattributes with the text attribute set for the file.

Wouldn’t it be better to only consider the checked-in gitattributes instead of the attributes in the working tree? Is this a bug in git handling gitattributes or is this wrong usage? If it is wrong usage, is it documented anywhere?

The following shell script demonstrates the problem:

#!/bin/bash # creating a git repo "repo" rm -rf repo mkdir repo cd repo git init # committing gitattributes with text attribute set for all files echo "* text" > .gitattributes git add .gitattributes git commit -m "added .gitattributes" # add a file with CRLF line ending with text attribute unset echo -e "crlf\r" > crlffile echo "* -text" > .gitattributes git add crlffile git commit -m "added crlffile" git checkout .gitattributes # now "crlffile" shows as modified, even though it isn't. # only way to resolve is to modify .gitattributes git status crlffile # crlffile shown as modified. git checkout crlffile git status crlffile # crlffile shown as modified. git reset --hard git status # crlffile shown as modified. # git diff will report the CR as the difference git diff # but external diff reports no differences. git difftool --extcmd=diff --no-prompt

Thanks for your help Frank Ammeter

Next: Torsten Bögershausen
Message 1 of 8 in “wrong handling of text git attribute leading to files incorrectly reported as modified”
  1. Frank AmmeterApr 11, 2014
  2. Torsten BögershausenApr 11, 2014
  3. Frank AmmeterApr 12, 2014
  4. Brandon McCaigApr 15, 2014
  5. Junio C HamanoApr 15, 2014
  6. Frank AmmeterApr 16, 2014
  7. Junio C HamanoApr 16, 2014
  8. Holger HellmuthApr 16, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.