On Thu, Aug 08, 2019 at 11:08:14PM +0000, Yagnatinsky, Mark wrote: > Okay, my attempt at better wording for the docs is not going well, because it > turns I that I still don't understand the behavior here! > I thought that "input" means that CRLF will become LF on "git add" but that > seems to be true only sometimes. > For instance, consider the following 11-line shell script: > > mkdir empty > cd empty > git init > git config core.autocrlf false > echo -e '1\r\n2' > test.txt > git add . > git commit -m test > git config core.autocrlf input > cp test.txt t2.txt > echo 'a\r\nb' > test.txt > git add . > > The output from the last git add is: > > warning: CRLF will be replaced by LF in t2.txt. > The file will have its original line endings in your working directory. > > Which is a very good warning indeed, but why does it only apply to the new > file t2.txt? > Why does the existing file test.txt retain its CRLF line endings. Because there are no CRLF ;-)
This line echo 'a\r\nb' > test.txt should probably be written as echo -e 'a\r\nb' > test.txt or better printf 'a\r\nb' > test.txt > I am so confused. Please run od -c test.txt and may be git ls-files --eol > > Any pointers? https://git-scm.com/docs/git-add What happens if you run the following: mkdir empty cd empty git init echo "* -text" >.gitattributes printf '1\r\n2' > test.txt git add . git commit -m "Add test.txt with CRLF" echo "* text=auto eol=lf" >.gitattributes cp test.txt t2.txt printf 'a\r\nb' > test.txt git add . git commit -m "cp text.txt t2.txt; change test.txt; eol=input" git add --renormailze test.txt git commit -m "Normalize line endings in text.txt"