Subversion - слияние ветки в ствол - PullRequest
3 голосов
/ 18 апреля 2011

Я создал ветку (ревизия 9002) из ​​своего ствола и продолжал вносить в нее изменения в течение нескольких недель. Я также регулярно и без проблем сливал изменения из транка в ветку, используя

svn merge -rXXXX:HEAD

где XXXX - это ревизия после той, которая была создана моим предыдущим слиянием. Пока все хорошо.

Теперь мне нужно слить ветку в ствол, и у меня возникают серьезные трудности с этим. Я пробовал следующее SVN: объединение ветви в магистраль , но при использовании

svn merge -r9003:head http://path/to/my/branch

Я получаю около 20 конфликтов деревьев, затем svn: Attempt to add tree conflict that already exists, и процесс останавливается.

Это правильный способ сделать это? Есть идеи?

Последнее, что я сделал на ветке, это слияние ствола с ним, так что ветка - это, в основном, мой новый ствол.

Ответы [ 3 ]

2 голосов
/ 18 апреля 2011

Если вы слили все из транка в свою ветку и просто хотите продвинуть это в транк, то, вероятно, проще всего переместить каталоги в хранилище

svn move http://path/to/trunk http://path/to/branches/old-trunk
svn move http://path/to/branches/my-new-trunk http://path/to/trunk

Обратите внимание, что поскольку вы сейчасскопированный в ствол, тогда svn log --stop-on-copy (по умолчанию в черепахе) остановится на этом этапе - вам нужно отключить этот флаг, чтобы увидеть дальше.

В противном случае, я думаю, вам придется svn mergeкак и раньше, в небольших группах ревизий, а не за один раз, разрешайте различные конфликты по ходу дела.

1 голос
/ 19 апреля 2011

Чтобы объединить вашу ветку, вы должны объединить разницу между веткой и стволом (то есть руководство --reintegrate).

Итак

svn merge http://path/to/trunk@N http://path/to/branch@HEAD .

, где Nпоследняя ревизия ствола, который вы объединили в ветку.Учитывая, что последнее, что вы сделали, это синхронизировали ветку с транком, который вы могли бы использовать HEAD.

Таким образом, вы говорите SVN объединить все изменения, сделанные в ветке, за исключением тех, которые пришлитранк.

Кроме того, если вы хотите синхронизировать ветку с транком, выполните svn merge http://path/to/trunk .

1 голос
/ 18 апреля 2011

Я всегда использую флаг --reintegrate, когда сливаю ветку обратно в транк.Итак, когда в каталоге выписана копия транка, попробуйте svn merge --reintegrate ^/path/to/branch.Кроме того, я не уверен, почему вы используете svn merge -rXXXX:HEAD вместо svn merge ^/trunk из каталога извлеченной копии транка.Это то, что я всегда делал, хотя я часто ошибаюсь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...