2014-10-01 5 views
0

Я столкнулся с проблемой с SVN слиянием, вот сценарийsvn - как слить каталог, созданный вручную в двух ветвях?

Магистральных
branch1
branch2

Новая папка была создана «ABC» на Branch1 и Branch2 simulataneously, код база обоихов был обновлен до Branch1. Дальнейшие коды кодов были сделаны на Branch2.
Теперь, когда Branch1 был объединен обратно в Trunk, он был гладким.
Когда соединительная линия была объединена с Branch2, возник конфликт дерева (как и ожидалось).

Но теперь я не уверен, как действовать. Я хочу сохранить изменения lcoal в Branch2, а также правильно слить каталоги, чтобы будущие слияния не приводили к конфликту деревьев.

Любые идеи? Кто-нибудь сталкивался с такой проблемой? Любое разрешение?


Некоторые ответ на поставленный вопрос: Q Почему вы создаете две ветви в то же время?
A: Я собираюсь слить задачу svn в команде из 25 разработчиков. Разработчики создали это.

Q И почему обе ветви создавали эту директорию abc?
A: Это тот же проект, который используется. Один из них работает над своей исходной фазой, а другой - с особенностью, прежде чем она будет выпущена.

Q Является ли проект abc или просто новым каталогом в рамках существующего проекта?
A: это новый проект

Этот каталог abc существует в багажнике?
A: No

ответ

0

Для Subversion /Branch1/abc и /Branch2/abc две совершенно отдельные каталоги. Между ними нет общей истории. В следующий раз вам нужно использовать svn cp, поэтому Subversion может сказать, что они связаны.

Вы можете попробовать тег --ignore-ancestory, но это будет делать двустороннее слияние вместо трехстороннего слияния. Это означает, что если я объединил /Branch2 в /Branch1, то каталог abc на /Branch1 будет таким, каким он был на /Branch2.

Почему вы создали две ветки в то же время? И почему оба филиала создали этот каталог abc?Является abc проектом или просто новым каталогом в рамках существующего проекта? Значит, каталог abc существует в багажнике?

Похоже, вам, возможно, придется пересмотреть свои методы работы с CM. К сожалению, без дополнительной информации я не могу дать вам более конкретные советы.

+0

отвечает на ваш вопрос в обновленном сообщении. Я планирую удалить проект abc в одной ветке, а затем продолжить слияние. Как вы думаете, это хорошая идея? – mtk

+0

Да. Избавьтесь от одной из ветвей. Это совершенно другой проект с тем же именем. Удалите эту ветку. Если все еще необходимо, скопируйте эту ветку в другую. Я бы сделал политику всегда создавать новые проекты в '/ trunk', прежде чем создавать ветку для этого проекта. Затем используйте 'svn cp' для создания ветки. Это предотвратит создание двух проектов в одной ветви. –

0

Очевидно, что вы столкнетесь с конфликтами деревьев, если вы объедините одно и то же имя каталога из 2 источников. Вы можете попытаться вымыть его, объединив ветвь 1, а затем слить последующие изменения в каталог из ветки 2 (то есть пропустить ревизию, которая создала каталог, и только объединить те, которые содержат изменения в содержимом).

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

0

До слияния /trunk от корня в branch2, объединить поддерево /trunk/abc в /Branch2/abc