У меня есть git-репозиторий в папке Dropbox, совместно используемый компьютером с Linux и Windows. Я пытаюсь синхронизироваться только на компьютере с Windows, потому что я знаю о "проблемах", которые могут возникнуть. Иногда я делаю небольшой коммит на Linux, чтобы отследить свои изменения,
Но теперь мне действительно интересно, что делает git: Id не трогал файл fonttest.tex
, но git сообщает, что он был изменен:
towi@havaloc:~/Dropbox/latex$ git status fonttest.tex
# On branch master
...
# modified: fonttest.tex
И diff
перечисляет весь файл: все строки удалены и вставлены снова. Хорошо, вероятно, проблема CRLF. Поэтому я прошу todos
и fromdos
конвертировать туда и обратно с и без CR и CRLF. Но - вы уже догадались - без изменений для git
: все строки изменились.
Хм, подумал я, поскольку я знаю, что ничего не изменилось, я получаю чистую копию:
mv fonttest.tex fonttest.tex1
git checkout fonttest.tex
И потому что я любопытный человек, хочу увидеть разницу
diff fonttest.tex fonttest.tex1
ничего такого. В самом деле?
towi@havaloc:~/Dropbox/latex$ md5sum fonttest.tex*
d3544bd060504ebb682b2e446375b3b3 fonttest.tex
d3544bd060504ebb682b2e446375b3b3 fonttest.tex1
В самом деле. И что думает об этом?
towi@havaloc:~/Dropbox/latex$ git status fonttest.tex
# On branch master
...
# modified: fonttest.tex
Чувак, ты только что проверил это для меня! В чем тут дело? Почему git думает, что файл изменился?
Вот выдержка из моего конфига. Я внес некоторые коррективы в CRLF, следуя чьему-то совету по обмену Dropbox. Но... Я просто не могу следовать за мерзавцем здесь.
towi@havaloc:~/Dropbox/latex$ git config -l
diff.renames=copies
apply.ignorewhitespace=change
apply.whitespace=nowarn
core.whitespace=cr-at-eol
core.repositoryformatversion=0
core.filemode=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
core.eol=lf
core.autocrlf=input