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