Tortoise SVN объединяет две ветки

Я пытаюсь объединить две ветки с черепахой SVN. Обе ветки были изменены, так как они разошлись. Если я объединю их, получим только изменения одного из них, а изменения другого будут перезаписаны. Но я хочу последнее изменение каждого файла (мы не работали в тех же файлах).

Я попробовал опцию "Объединить два разных дерева" и ввел две ветки в "От:" и "До:". Я взял Head Revision на обоих. Я оставил все остальное по умолчанию (глубина слияния: рабочая копия, сравнение пробелов, все остальное не проверено)

Ответ 1

В опции From URL вы должны указать ветвь, с которой вы хотите объединиться.

Например, предположим, что есть 2 ветки: ветвь A и ветвь B, и вы хотите объединить ветвь B с ветвью A.

  • В TortoiseSVN щелкните опцию Merge, а затем выберите опцию Merge two different trees.
  • В From URL, пожалуйста, укажите URL ветвь A и в To URL упомяните URL ветки B.

Это должно объединить ветку B с веткой A без потери файлов.

Ссылка: нашел это выражение здесь

Ответ 2

Слияние в Subversion всегда выполняется локально. Филиал, который вы хотите объединить, должен быть проверен с чистой проверкой. То есть, он должен быть обновлен без каких-либо локальных изменений. Затем вы объединяете в нее другую ветку и фиксируете свои изменения.

Слияние не является дубликатом конкретной ветки. Слияние обычно осуществляется в три режима. У вас есть ветка, в которую вы сливаетесь (называете свою) ветвью, из которой вы сливаетесь (называемой их), и последним общим предком (LCA). Последнее важно.

Если изменения произошли в вашем филиале, это не коснулось во время процесса слияния. Алгоритм слияния знает это, потому что существует разница между вашим и LCA. Если есть разница между LCA и их, которые рассматриваются для изменения.

Если я понимаю, что у вас есть:

  • branch1 был взят из магистрали.
  • branch2 взято из branch1.

Что вы пытаетесь объединить? Вы хотите объединить как branch1, так и branch2 в trunk. Это должно быть возможно, если вы скопировали trunk в branch1 через Subversion и скопировали branch1 в branch2 через Subversion. Таким образом, Subversion знает, что две ветки связаны в их истории.

Если вы создали ветвь, использовали Windows для копирования файлов и добавили файлы, у вас нет истории между двумя ветвями, а слияние сложнее.

Можно ли объединить изменения branch2 в branch1? Если так, я бы сделал что-то вроде этого:

  • Оформить заказ branch2
  • Объединить branch1 в branch2 и зафиксировать эти изменения. branch2 будет иметь все изменения в branch1.
  • Оформить заказ trunk
  • Объединить branch2 в trunk. Теперь Trunk будет иметь все изменения как в branch1, так и branch2.