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
.