2011-04-18 3 views
3

Я создал ветку (ревизия 9002) из ​​моего ствола и продолжал вносить в нее изменения в течение нескольких недель. Кроме того, я слил изменения из ствола в филиал регулярно и без проблем, используяSubversion - Объединяющая ветвь в багажник

svn merge -rXXXX:HEAD

где XXXX является пересмотром после того, как один, который создал мое предыдущее слияние. Все идет нормально.

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

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

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

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

Последнее, что я сделал на ветке, заключалось в слиянии ствола с ней, поэтому ветка - это в основном мой новый багажник.

+0

Какая версия SVN работает на вашем клиенте и сервере? – ChrisH

ответ

2

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

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 (по умолчанию в Tortoise) остановится на этом этапе - вам нужно включить этот флаг прочь, чтобы видеть дальше.

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

1

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

+0

К сожалению, репозиторий не поддерживает -reintegrate. –

+0

@Per Holmäng: ах, ну тогда не обращайте внимания :) Какая версия подрывной деятельности вы используете? – William

1

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

Так

svn merge http://path/to/[email protected] http://path/to/[email protected] . 

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

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

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

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