SVN – невозможно объединить ветку обратно в ствол – многочисленные конфликты деревьев

StackOverflow https://stackoverflow.com/questions/1008681

  •  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, и это поможет мне разобраться.

Высокоуровневые шаги по созданию ствола в точности как ветка или тег:

<Ол>
  • Оформить заказ из багажника.
  • Используя рабочую копию транка, объединяйтесь из транка в ветку / тег.
  • Commit.
  • Пример команд командной строки '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

    После этого я могу объединиться из ветви в ствол.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top