Несовместимые окончания строк с использованием git-svn с коммитами из обеих VCS - PullRequest
3 голосов
/ 05 апреля 2011

У меня есть удаленный репозиторий SVN и локальный репозиторий git. Используя git-svn, я связал git с SVN и успешно использую git svn rebase, git svn dcommit для извлечения и передачи в удаленный репозиторий SVN.

Однако, когда другие люди проверяют мои ранее отредактированные файлы с помощью SVN и пытаются открыть их в VS2010, они получают диалоговое окно, сообщающее, что окончания строк не соответствуют друг другу.

Я прочитал несколько вещей об опции core.safecrlf в git config, но это решит мою проблему? У меня есть еще несколько человек, которые регистрируются, но у нас у всех запущены окна - я подумал, что окончания строк будут одинаковыми?

Сохранит ли настройка core.safecrlf одинаковые типы концов строк при извлечении и при фиксации?

Ответы [ 3 ]

4 голосов
/ 12 апреля 2012

В последнее время я занимался этой же проблемой По умолчанию Git в Windows устанавливает core.autocrlf = true . Что происходит, так это то, что ваши файлы извлекаются из репозитория SVN с окончаниями строк CRLF, но фиксируются с окончаниями строк в стиле Unix (LF). Когда вы dcommit вносите эти изменения, я полагаю, что файлы передаются на сервер SVN с окончаниями строк в стиле Unix. Теперь, когда кто-то проверяет эти файлы, используя SVN, преобразование конца строки не выполняется.

Вы можете установить core.autocrlf = false , чтобы преобразование не выполнялось. Если вы все работаете в Windows, у вас не должно возникнуть никаких проблем. Если вы делитесь репозиторием SVN с пользователями * nix, вероятно, у вас начнутся несоответствия. Это причина для опции autocrlf. Репозитории должны оставаться согласованными, и поскольку Linux не любит хорошо играть с CRLF, для этого autocrlf должно быть установлено значение true.

1 голос
/ 29 января 2014

Вот статья GitHub, которая описывает ваш выбор для обработки символов конца строки в Git:

https://help.github.com/articles/dealing-with-line-endings

По сути, Git помогает конвертировать EOL в разных ОС. SVN имеет аналогичную функциональность. Вам необходимо убедиться, что они установлены в согласованном порядке.

1 голос
/ 12 мая 2012

Проблема окончания строки - это хорошо известная головная боль git-svn. Я бы порекомендовал использовать SmartGit для работы с вашим репозиторием. Я уважаю значение svn: eol-style для использования правильного EOL в Git (переводя его в соответствующее значение .gitattirbutes). Вы также можете контролировать значение svn: eol-style при отправке в SVN с помощью соответствующих изменений .gitattirbutes.

Если у вас есть доступ к серверу, возможен другой подход: просто установите SubGit на свой SVN-сервер. Затем на сервере будет создан связанный репозиторий Git, так что каждый толчок к нему будет автоматически транслироваться в SVN и наоборот. Он также переводит svn: eol-style в .gitattirbutes.

Поэтому я бы порекомендовал одно из этих решений, но не git-svn, который (как я знаю) мучительно медленен в Windows.

...