Безопасно ли использовать ветку функции subversion после реинтеграции - объединить в магистраль?

Должна ли удаляться ветвь функции после ее объединения (реинтеграции) обратно в магистраль?

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

Это так? Зачем? Что я могу сделать, чтобы обойти это?

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

Обновить верхний ответ действительно определяет довольно сложную процедуру (слияние, удаление и повторное использование). Есть ли простой способ сделать это в TortoiseSVN? Не должно быть?

+21
источник поделиться
5 ответов

edit: Эта проблема, по-видимому, была исправлена ​​в SVN 1.8. Раздел о базовом слиянии из книги SVN 1.8 был обновлен, чтобы сказать, что в порядке повторного использования ветки признака. Ответ ниже подходит только для старых версий SVN.


Из раздела базового слияния в книге svn:

В Subversion 1.5, когда a --Реинтегрировать слияние выполняется из ветки в магистраль, ветка - нет более длительный срок годности для дальнейшей работы. Это не способен правильно поглощать новый багажник изменений, а также не может быть снова реинтегрировался в багажник. Для этого причина, если вы хотите продолжать работать в вашем филиале, мы рекомендуем уничтожая его, а затем воссоздавая его из ствола:

Это все еще имеет место в SVN 1.6 и 1.7.

Эта отличная статья о отражающих слияниях объясняет, почему именно вы не можете или не должны перерабатывать ветвь функции. Резюме наиболее важных моментов:

  • вы можете выполнять работу по разрешению конфликтов. при реинтеграции со стволом
  • Реинтеграция в багажнике поэтому содержит оба изменения исходя из функциональной ветки и работа по разрешению конфликтов
  • Однако, подрывная деятельность не поможет вам объединить эту работу по разрешению конфликтов вернуться к ветки функции. Это просто смотрит на mergeinfo и думает "эти изменения изначально исходили из ветвь функции, не нужно объединять их снова к их происхождению ".

Удаление ветки функции и ребринга дешево и позволяет избежать этой проблемы.

+24
источник

Мы делаем это часто (SVN 1.5 и выше). Вам просто нужно не повторять эти изменения обратно в ветку.

Чтобы сделать это, просто выполните ряд ревизий, объединив их от магистрали к ветке. Укажите ревизию в сундуке, которую вы сделали реинтеграцией ветки, и пометьте ее как "Только запись слияния" из ревизии магистрали в ветку.

Как только вы сделаете это, вам должно быть хорошо идти.

Изменить
Точка, которую wcoenen приводит из статьи о конфликтах, действительна. Если вы не синхронизируете изменения сундуков в ветку, прежде чем выполнять реинтеграцию, у вас возникнут проблемы с конфликтом. Мы продолжаем синхронизацию ветки и не испытываем никаких проблем с продолжением повторного использования ветки после нескольких повторных целей.

Изменить 2

Сохранение реинтегрированной ветки (http://svnbook.red-bean.com/en/1.7/svn.branchmerge.advanced.html)

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

+8
источник

Да, вы можете сделать слияние только для записи, чтобы поддерживать ветвь.

См. Сохранение реинтегрированной ветки в книге Subversion.

+4
источник

Subversion 1.8 позволяет вам неоднократно сливаться между двумя ветвями, в то время как версии 1.7 и более ранние версии не выполнялись. Прочтите примечание к выпуску здесь: http://subversion.apache.org/docs/release-notes/1.8.html#auto-reintegrate.

+3
источник

Все это зависит от вашего личного мнения и от количества людей, сходящихся в багажник.

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

Однако, если у вас не так много подсетей, и вы используете subversion 1.5+, вы можете избежать этого, и это может помочь избежать конфликтов слияния.

Конечно, если ваш "багажник" используется в качестве бета-релиза-релиза-релиза, то вы не должны этого делать.

-1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос