Как исправить проблемы с окончанием строки после перехода с SVN на git?

Я только что закончил преобразование репозитория Subversion в git, используя

git svn clone--stdlayout --authors-file=ourcommitters.txt svn://svn.internalserver.com

При этом я установил для git-флага core.autocrlf значение true - на всякий случай, если это имеет значение.

Спустя долгое время команда закончилась. Я немного почистил полученный репозиторий git (удалил ненужные ветки, создал теги и т. Д.), И теперь все выглядит очень красиво и хорошо работает. Репозиторий размещен на компьютере с Linux, и его клонирование на другие устройства с Linux работает очень хорошо.

Однако я заметил одну проблему: при клонировании репозитория в поле Windows некоторые файлы меняются при переключении ветвей. Например, я делаю так:

git clone svn://our.git.server/foo
git status                           # Everything is clean
git checkout -t origin/maintenance   # Switch to maintenance branch
git status                           # Everything is clean
git checkout master                  # Back to master branch
git status                           # A few files are modified!

При выполнении «git diff» я замечаю, что измененные файлы не отличаются ничем, кроме концовки строк. Немного исследуя это, мы заметили, что эти файлы были случайно проверены с использованием окончаний строк CR-LF (вместо окончаний строк LF) в Subversion, и эта ошибка была преобразована в наш репозиторий git.

Есть ли способ исправить эту проблему в нашем репозитории (до сих пор он не клонировался очень часто, поэтому можно было бы переписать некоторую историю) без выполнения «фиксации очистки» или чего-то подобного? Может, как-нибудь незаметно переписать затронутые объекты?

В качестве альтернативы мы могли бы исправить это в Subversion, а затем снова выполнить команду git svn clone выше. Кажется, что это работает постепенно (он просто берет последнюю фиксацию исправления конца строки), но опять же - он создает фиксацию. Интересно, смогу ли я обойти это?


person Frerich Raabe    schedule 16.10.2009    source источник
comment
Я никогда не работал с git svn, но взгляните на этот вопрос: stackoverflow.com/questions/1575682/   -  person Ionuț G. Stan    schedule 16.10.2009


Ответы (1)


Оказалось, что самым простым способом было исправить неисправные файлы в Subversion, а затем снова клонировать с помощью

git svn clone--stdlayout --authors-file=ourcommitters.txt svn://svn.internalserver.com
person Frerich Raabe    schedule 16.10.2009