Простое слияние в svn с помощью git-svn

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

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

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


person IAdapter    schedule 23.07.2010    source источник


Ответы (1)


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

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

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

Как оговорка в git-svn (см. Вопрос SO "git-svn merge 2 svn branch "):

Для простоты и взаимодействия с менее функциональной системой (SVN) рекомендуется, чтобы все git svn пользователи clone, fetch и dcommit непосредственно с сервера SVN и избегали всех операций git _10 _ / _ 11 _ / _ 12 _ / _ 13_ между репозиториями git и ветки.
Рекомендуемый метод обмена кодом между ветвями git и пользователями - git format-patch и git am, или просто «dcommit» в репозиторий SVN.

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

person VonC    schedule 23.07.2010