@ ответ шелка выше является лишь частичным решением. Полное решение также включает в себя настройку git для преобразования CRLF в LF при коммите. Итак, в дополнение к тому, что предлагает @silk, вы должны также сделать:
git config --global core.autocrlf input
git config --global core.safecrlf warn
Или:
git config --global core.safecrlf warn
git config --global core.attributesfile ~/.gitattributes
echo '* text=auto' >> ~/.gitattributes
Пояснение:
По моему опыту, git-svn
установит атрибут svn:eol-style=native
при фиксации, как описывает @silk, но не фактически преобразует зафиксированные файлы в окончания строк LF перед фиксацией. Таким образом, любые окончания строк CRLF будут зафиксированы в неповрежденном хранилище Subversion, но Subversion ожидает, что все приписанные svn:eol-style=native
файлы будут сохранены с окончаниями строк LF. Конечным результатом является то, что в первый раз, когда кто-то редактирует и фиксирует такой файл из рабочей копии Subversion, diff будет включать преобразование CRLF в LF.
Итак, полное решение должно включать принудительное преобразование файлов в конец строки LF перед выполнением команды git. Вы можете сделать это, установив core.autocrlf=input
, что означает «преобразовать все CRLF в LF при фиксации, но не выполнять обратное преобразование при извлечении», и core.safecrlf=warn
или core.safecrlf=true
, которые будут предупреждать или останавливать вас, когда вы попробуйте зафиксировать файл с окончанием строки CRLF. Параметр autocrlf
обеспечит преобразование этих CRLF, поэтому safecrlf=true
, вероятно, является чрезмерным. См git help config
.
Кроме того, вы можете использовать атрибуты git для принудительного преобразования, установив text=auto
для всех файлов. Чтобы сделать это глобально, вам нужно указать файл атрибутов в core.attributesfile
. См git help attributes
.