SVN – невозможно объединить ветку обратно в ствол – многочисленные конфликты деревьев
-
06-07-2019 - |
Вопрос
У меня есть, как мне казалось, простой сценарий - использование TortoiseSVN:
1) Я создал ветку (B2) приложения (для работы над реализацией спрайтов изображений и JAWR).
2) Тестирование и разработка продолжались в обычном режиме.
3) За последние несколько дней я несколько раз переустанавливал ветку:
3.1) Объединил ствол (по диапазону ревизий) с моей рабочей копией ветки b2, разрешив конфликты во время слияния.
3.2) (после тестирования ветки-b2) я фиксирую перебазированную ветку-b2.
Все сработало так, как я ожидал.Но объединение ветки обратно в ствол меня устраивает:
4) После всех обновлений, совершенных в ветке-b2;Я обязательно делаю обновление SVN на магистрали и ветке b2.
5) Затем пытаюсь объединить (диапазон ревизий) из ветки-b2 в транк.Однако для любого нового файла, который был добавлен в ствол, а затем добавлен в ветку b2, когда я его перебазировал, я получаю конфликт дерева.Я не уверен, как правильно разрешить эти конфликты.
Самый типичный совет, который я видел, — либо удалить файлы конфликтов деревьев из ствола, а затем объединить ветку;или удалите весь ствол, скопируйте файлы ветвей, а затем зафиксируйте их как новую версию в стволе.Ни один из этих вариантов не кажется хорошей идеей: первый доставляет неудобства, и оба, похоже, потеряют историю изменений файлов.
Что я сделал не так и как это исправить?
Решение
Похоже, вы используете стиль слияния до 1.5 и пытаетесь реинтегрировать ветку в транк. В этом случае сначала необходимо убедиться, что все изменения в стволе были объединены с ветвью, а затем вместо слияния диапазона ветки с рабочей копией, указывающей на ствол, вы хотите объединить & FROM FROM магистраль @ ГОЛОВА К ветке @ ГОЛОВА " с рабочей копией, указывающей на ствол. По сути:
" Дайте мне все изменения, которые нужно сделать, чтобы магистраль была идентична ветви ".
Это работает, если вы уже объединили все изменения соединительной линии в ветвь, потому что тогда единственное различие между стволом и ветвью - это изменения, внесенные в ветвь.
Имеет смысл? :) Р>
Другие советы
Я исследовал ту же проблему.Это «функция» в Tortoise SVN 1.6.5.TortoiseSVN 1.5 отлично работает с нашим репозиторием (SVN 1.5).TortoiseSVN 1.6.5 при перебазировании добавляет файлы из основной ветки как НОВЫЕ (без сохранения истории слияний).
И реинтеграция результатов ветки позволяет рассматривать эти файлы как конфликтующие с основной веткой.
Я решил проблему, используя функцию «реинтеграции ветки» TortoiseSVN 1.6.Он специально предназначен для функциональных ветвей.
- Алексей Корсун
Вот еще немного информации, чтобы внести свой вклад в ответ @Rytmis, и это поможет мне разобраться.
Высокоуровневые шаги по созданию ствола в точности как ветка или тег:
<Ол>Пример команд командной строки 'svn':
svn checkout <trunk url>
cd trunk
svn merge <trunk url> <branch/tag url>
svn commit -m "<message>"
Я не мог понять, как работало вышеупомянутое решение, поэтому моя работа отличается. Сначала я убедился, что ветка содержит все изменения из ствола.
1) Я получил свежую копию сундука. 2) Я экспортировал ветку во временное местоположение, используя экспорт svn черепахи. 3) Я использовал проводник Windows, чтобы скопировать все дерево веток в ствол и переписал все файлы. 4) Я использовал команду проверки на изменения на черепахе и включил флажок для всех невидимых файлов. 5) Я выбрал все файлы и нажал «Добавить».
Вы должны использовать решения, которые не были созданы, чтобы невидимые файлы не включали вывод.
Я не могу дождаться, пока мы обновимся до 1.5 +
Выберите редакции для слияния, выбрав " Объединить диапазон представлений " вариант с использованием TortoiseSVN. Это предотвратит конфликты дерева для одних и тех же файлов, возникающих снова для каждой операции слияния.
Я думаю, что решил эту проблему. 1. Щелкните правой кнопкой мыши "Ветвь". который вы слили. 2. Нажмите Черепаха SVN > > сливаться 3. " Объединить диапазон ревизий " и далее 4. ПРОВЕРЬТЕ «Обратное слияние» !!! , URL для слияния из "ветви", определенного диапазона "недавно слитой ревизии" и "Далее" 5. Далее 6. SVN Commite
После этого я могу объединиться из ветви в ствол.