2013-05-27 5 views
0

Сценарий:Как «git rebase master» в SVN?

  • создан филиал (возможно, некоторые коммиты добавил, в моем случае нет)
  • Позже, в багажнике, фиксация толкаются другим разработчиком, что имеет важное значение для филиала работать

Каков самый чистый рабочий процесс, чтобы получить фиксацию с багажника?

+0

Я знаю [слияние] (http://svnbook.red-bean.com/nightly/en/svn.branchmerge.html). Вы просите чистый способ ... У вас есть текущий метод, который вас не удовлетворяет? –

+0

@ Álvaro G. Vicario, удалите ветку и звезду заново. Я не полностью понимаю слияние SVN. Когда я сливаюсь, делаются только изменения в файлах, а не коммиты (и их сообщения). Это тоже непростая задача, чтобы иметь две коммиты с одинаковыми модификациями, но разные коммиты и числа. – Vorac

+0

@Vorac: SVN не работает так же, как Git. Если вы хотите систему управления версиями, которая работает как Git, используйте Git. Если вы используете SVN, вам придется учиться и соглашаться с тем, как работает SVN. –

ответ

1

Вы можете использовать svn merge, чтобы объединить изменения из одной ветки в другую. Это похоже на команду git rebase:

$ svn co $REPO/branch/$branch/$project 
$ cd $project 
$ svn merge $REPO/trunk/$project 
$ svn commit -m"Merging some change that was in trunk that the branch needs" 

В последней редакции Subversion, вам больше не нужен переключатель -reintegrate.

Если вы знаете точную ревизию, которую хотите объединить. То есть, вы смотрели на svn log и увидеть изменения вы хотите на стволе, вы можете указать только сливаться только что пересмотр:

$ svn co $REPO/branch/$branch/$project 
$ cd $project 
$ svn merge -r$rev $REPO/trunk/$project 
$ svn commit -m"Merging revision $rev into branch because the branch needs it" 

Это будет сливаться только в одно изменение, которое было проверено в trunk, что ветвь также необходимо.

Для получения дополнительной информации, используйте команду svn help merge и см. Раздел Subversion online manual.

Помните, что git имеет по крайней мере два отдельных репозиториев, которые он использует, таким образом, rebase и merge оба необходимы в то время как svn имеет дело только с централизованным хранилищем, таким образом, только одна команда необходима.

+0

даже в не столь последней версии SVN '-reintegrate' switch здесь не нужен, это было бы необходимо, если мы сменим изменения с ветки на магистраль – maxim1000

+0

Спасибо, Дэвид, я сделаю это! – Vorac

Смежные вопросы