Почему возникают конфликты при слиянии ветки с магистралью и последующем слиянии с веткой? - PullRequest
6 голосов
/ 08 июня 2010

Допустим, у меня есть ветвь функции с именем "branch / BigFeature". Я хочу перенести эти изменения в Trunk, внести некоторые изменения в Trunk и объединить их обратно в ветку «BigFeature», чтобы разработка могла продолжаться.

Мои шаги были:

  1. Объединить последние изменения в магистрали с филиалами / BigFeature. (Черепаха SVN -> объединить ряд ревизий)

  2. Объединить изменения в ветвях / BigFeature в магистраль. (Черепаха SVN -> реинтегрировать ветку)

  3. Внести некоторые изменения в Магистраль.

  4. Объединить изменения в стволе с ответвлениями / BigFeatures. (Черепаха SVN -> объединить ряд ревизий)

Проблема возникает на шаге 4. Когда я возвращаюсь к BigFeature, я получаю всевозможные конфликты. Кажется, есть проблема с файлами, которые были первоначально добавлены в Branch / BigFeature, но были объединены в Trunk.

Сообщение, которое он дает мне: «Последний Операция слияния попыталась добавить файл бла, но он уже был добавлен локально.

Этот вид имеет смысл, поскольку файл был первоначально добавлен в ветвь branch / BigFeature, а затем объединен с Trunk. Но почему операция объединения не может реализовать это? Почему это возникает как конфликт?

Такая же ошибка возникает для удаленных файлов.

Последняя операция слияния пыталась удалить / переместить / переименовать каталог «бла», но он был удален, перемещен или переименован локально.

Спасибо за помощь.

1 Ответ

7 голосов
/ 08 июня 2010

К сожалению, это недостаток SVN, способ его построения.

Шаги в SVN должны выглядеть следующим образом:

1. (not modified) Merge the latest changes in Trunk to branches/BigFeature. (Tortoise SVN -> Merge a range of revisions)
2. (not modified) Merge the changes in branches/BigFeature to Trunk. (Tortoise SVN -> Reintegrate a branch)

2a. Delete branch branches/BigFeature
2b. Create branch branches/BigFeature from current trunk

3. (not modified) Make some changes to Trunk.
4. (not modified) Merge the changes in Trunk to branches/BigFeatures. (Tortoise SVN -> Merge a range of revisions)

Ветвь SVN больше не может использоваться после операции реинтеграции.

Обновление: вместо удаления ветки есть второй способ .

2a. on branch: 
    $ svn update
    Updated to revision X
    $ svn merge --record-only -c X ^/trunk
    $ svn commit -m "Block revision X from being merged into the branch."

Я не знал этого трюка, я узнал его благодаря вашему вопросу: D

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