Я только что закончил преобразование репозитория 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 выше. Кажется, что это работает постепенно (он просто берет последнюю фиксацию исправления конца строки), но опять же - он создает фиксацию. Интересно, смогу ли я обойти это?
git svn
, но взгляните на этот вопрос: stackoverflow.com/questions/1575682/ - person Ionuț G. Stan   schedule 16.10.2009