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