Подтвердить что ты не робот

Замена соединительной линии веткой в ​​Subversion

Предположим, что люди работали над багажником и на ветке хранилища Subversion. Я хочу отменить любые изменения в багажнике и заменить его копией ветки.

Как было предложено в другом вопросе, я могу просто переместить или удалить соединительную линию, а затем скопировать ветвь на туловище. Но тогда история ствола заменяется историей ветвей. Что делать, если я хочу сохранить историю стволов?

Я думаю, что я хочу что-то вроде слияния, но тот, где изменения назначения игнорируются и просто заменяются источником. Как я могу сделать это в Subversion? Это считается хорошей практикой?

4b9b3361

Ответ 1

Хотя это довольно старый поток, но по-прежнему делится опытом

Недавно мы сделали это для одного из наших проектов и следовали рекомендациям как:

svn copy <repos/trunk> <repos/tag/old_trunk> -m "copied old trunk as tag"

svn delete <repos/trunk> -m "deleted trunk temporarily"

svn copy <repos/branch/new_fetaure_branch> <repos/trunk> -m "placed new trunk with features"

Следуя этим шагам, история инсталляции багажника сохранилась и заменила новую ветвь функции как тубу.

Ответ 2

Слейте все изменения из ветки в соединительную линию, а затем разрешите все конфликты с помощью

svn resolve path --accept theirs-full

Или вы можете сказать, что это слияние:

svn merge -rX:HEAD url/of/branch trunk\wc --accept theirs-full

После такого слияния у вас есть рабочая копия, которая выглядит как таковая на ветке. Все, что вам нужно сделать, это зафиксировать рабочую копию соединительной линии.

Ответ 3

Pre-1.5 это просто: убедитесь, что ваша рабочая копия указывает на соединительную линию, затем выполните команду "svn merge url-of-trunk url-of-branch". Изменения, которые вы получаете, являются дельтами между сундуком и веткой, эффективно "дайте мне все, что нужно, чтобы сундук выглядел как ветка".

Я не знаю, изменит ли этот вариант 1.5 новые возможности слияния.

Ответ 4

Я не совсем уверен, что понимаю, что вы пытаетесь сделать. Что вы хотите совершить со всеми изменениями, произошедшими в багажнике после создания ветки? Вы хотите, чтобы они не отображались в журнале при просмотре истории файла после слияния? Если да, то то, что вы получите, если вы удалите багажник и скопируете ветку на свое место - ветвь делится историей с багажником до разветвления, так что это то же самое, за исключением изменений, сделанных после ветки.

Если вы хотите сохранить историю ствола, но просто топайте на всех изменениях между ветвлением и слиянием, это немного сложнее. Я думаю, что если вы выполните слияние, игнорирующее родословную (там опция --ignore-ancestry), она заменит содержимое ствола веткой. Вы также можете попробовать вариант --force с помощью слияния (как вместо, так и в сочетании с --ignore-ancestry). Попробуйте несколько способов узнать, получите ли вы результаты, которые вы хотите...

Если это не удается, вы всегда можете свернуть все изменения на соединительной линии с точки ветвления, а затем слить в ветки. Вероятно, это вызовет некоторые конфликты, которые вы, конечно же, захотите решить, используя версию из своей ветки. Я не знаю, оптимальны ли какие-либо из этих идей.

Ответ 5

trunk       remplace (trunk with your branch)
*----x      * ---->
 \          |
  \         |
   *--------|
     branch 

Эта ветка была создана из туловища, поэтому будьте осторожны, не удаляйте жестоко туловище (проблемы с родословной). Сначала создайте тег со своей стволом, ваша резервная копия, в любом случае...

Я предлагаю сделать вот так:

Использование Eclipse SVN

  • щелкните правой кнопкой мыши > Team Branch/tag (создайте тег - ваша резервная копия)

  • Командa > переключить другую ветку/тег... выберите свою ветку, убедитесь, что ветка правильно загружена.

  • в ветке: Team > disconnect. Удалить информацию SVN.

  • Командa > общий проект... выберите свою ствол.

  • Командa > зафиксировать в вашей внешней линии.

  • щелкните правой кнопкой мыши... выберите Сравнить с. Branch/tag → найдите свою ветку. Если все в порядке, у вас будет: "Между выбранными входами нет различий".

Надеюсь, это поможет.