Простое объединение в SVN с помощью GIT-SVN - PullRequest
4 голосов
/ 24 июля 2010

На работе мы используем много веток в SVN, и есть проблемы с объединением. Я слышал, что хорошей идеей является использование git, лучше слияние с git-svn. Я пытаюсь поиграть с ним, используя msysgit, но это не так просто, как кажется.

Я знаю, что могу оформить весь проект, используя git svn clone -s, но он не видит ветви (как обычные ветви git). Я считаю, что git-svn очень сложно использовать, сравнивать с git или svn.

Не могли бы вы пошагово описать, как сделать такое слияние?

1 Ответ

3 голосов
/ 24 июля 2010

git-svn даст вам ветки для каждой ветви и тега в SVN (если вы не используете ruby-скрипт, такой как svn2git )

Идея состоит в том, чтобы всегда git-svn rebase / git-svn dcommit ветвь SVN.
то есть вы синхронизируете ветку Git с веткой SVN (git-svn rebase) и обновите ветку SVN из новых коммитов в соответствующей ветке Git (git-svn dcommit).

Любые локальные ветви Git со всеми их причудливыми слияниями должны быть local (т.е. все эти ветви / слияния в Git не будут иметь эквивалента в репозитории SVN)

По мере появления предостережения в git-svn (см. Вопрос SO " git-svn merge 2 svn ветви "):

Для простоты и взаимодействия с менее способной системой (SVN) рекомендуется всем git svn пользователям clone, fetch и dcommit напрямую с сервера SVN и избегать всех мерзавцев. clone / pull / merge / push операции между репозиториями git и ветками.
Рекомендуемый метод обмена кодом между ветками git и пользователями - git format-patch и git am, или просто 'dcommit' в хранилище SVN.

Запуск git merge или git pull НЕ рекомендуется на ветке, которую вы планируете dcommit от.
Subversion не представляет слияния каким-либо разумным или полезным способом; таким образом, пользователи, использующие Subversion, не могут видеть сделанные вами слияния. Более того, если вы объединяете или извлекаете из ветки git, которая является зеркалом ветки SVN, dcommit может зафиксировать неправильную ветвь.

...