2014-01-13 4 views
9

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

Я попробовал вариант «Объединить два разных дерева» и ввел две ветви в «От:» и «Кому:». Я взял надпись на обоих. Я оставил все остальное по умолчанию (Объединить глубину: Рабочая копия, Сравнить пробелы, все остальное не отмечено)

+0

Имеют ли обе ветви общую ветвь/сундук предков? – Micha

+0

Да. Первый - это Багажник, а другой - ветвь от него. – deetz

+0

Слияние с (любой) веткой на туловище (реинтеграция ветвей) - это не «Слияние двух разных деревьев» и ** никогда не должно быть **. Попытайтесь хотя бы раз прочитать 'svn help merge' и TortoiseSVN помощь для слияния !!! –

ответ

14

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

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

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

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

6

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

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

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

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

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

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

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

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

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