Хорошая практика использования git вместе с svn
Subversion была популярна несколько лет назад, теперь git становится популярным, и все больше людей хотят заменить Subversion на git.
Проблема в том, что много проектов были основаны на Subversion. Поэтому вопрос заключается в том, как использовать git вместе с Subversion. Не заменяйте svn полностью и используйте git.
Самый простой способ - создать git на основе кода ветки Subversion, который вы уже проверили. Затем используйте git для локального управления. После внесения изменений отправьте на локальный сервер git, затем перейдите на удаленный сервер с Subversion. Subversion похожа на контейнер, содержащий git.
Кстати, я кодирую с xcode 3.x, сначала попробую xcode 4, но разочарован. (Xcode 4 вышел сейчас, но еще не повторил)
Как вы думаете? Или любой лучший выбор?
Спасибо
Ответы
Ответ 1
Subversion похожа на контейнер, содержащий git
Обязательно прочитайте раздел CAVEATS с git-svn:
ПРЕДОСТЕРЕЖЕНИЯ
Для простоты и взаимодействия с менее способной системой (SVN) рекомендуется, чтобы все git svn
пользователи clone
, fetch
и dcommit
были непосредственно с сервера SVN и избегали всех git clone/pull/merge/push операции между репозиториями и ветвями git.
Рекомендуемым методом обмена кодом между ветвями и пользователями git является git format-patch
и git am
, или просто 'dcommiting в репозиторий SVN.
Запуск git merge
или git pull
НЕ рекомендуется в ветке, на которой вы планируете dcommit
от.
Subversion не представляет собой слияние каким-либо разумным или полезным способом; поэтому пользователи, использующие Subversion, не видят никаких слияний, которые вы сделали. Кроме того, если вы слились или вытащили из ветки git, которая является зеркалом ветки SVN, dcommit
может передать неверную ветку.
Таким образом, вы можете принять любое слияние и публикацию рабочего процесса с Git, если вы оставите ветки SVN, которые вы зеркалируете в одиночку (в терминах слияний или переделок).
Ответ 2
Я создал коллекцию инструкций и скринкастов о том, как использовать git -svn здесь:
http://www.tfnico.com/presentations/git-and-subversion
Среди них вы найдете настройку зеркала git -svn. Это немного сложно понять и настроить, но он работает для меня почти год, с довольно большим хранилищем SVN.
Обновление: простая и ценная практика состоит в том, чтобы всегда инициализировать клоны git -svn с помощью опции --prefix
. Я объяснил, почему здесь.