Безопасно ли использовать ветку функции subversion после реинтеграции - объединить в магистраль?
Должна ли удаляться ветвь функции после ее объединения (реинтеграции) обратно в магистраль?
Я предпочитаю постоянно объединять изменения взад и вперед от моей ветки функций - я считаю, что это сдерживает конфликты до минимума. Тем не менее, я понимаю, что после использования объединения реинтеграции в магистраль необходимо удалить ветвь функции.
Это так? Зачем? Что я могу сделать, чтобы обойти это?
Обновление
Я спрашиваю о технических проблемах, которые возникают из инструмента, а не о "методологических проблемах". Я намерен продолжать работу над ветвью свойств после слияния.
Обновить верхний ответ действительно определяет довольно сложную процедуру (слияние, удаление и повторное использование). Есть ли простой способ сделать это в TortoiseSVN? Не должно быть?
Ответы
Ответ 1
edit: Эта проблема, по-видимому, была исправлена в SVN 1.8. Раздел о базовом слиянии из книги SVN 1.8 был обновлен, чтобы сказать, что в порядке повторного использования ветки признака. Ответ ниже подходит только для старых версий SVN.
Из раздела базового слияния в книге svn:
В Subversion 1.5, когда a --Реинтегрировать слияние выполняется из ветки в магистраль, ветка - нет более длительный срок годности для дальнейшей работы. Это не способен правильно поглощать новый багажник изменений, а также не может быть снова реинтегрировался в багажник. Для этого причина, если вы хотите продолжать работать в вашем филиале, мы рекомендуем уничтожая его, а затем воссоздавая его из ствола:
Это все еще имеет место в SVN 1.6 и 1.7.
Эта отличная статья о отражающих слияниях объясняет, почему именно вы не можете или не должны перерабатывать ветвь функции. Резюме наиболее важных моментов:
- вы можете выполнять работу по разрешению конфликтов.
при реинтеграции со стволом
- Реинтеграция в багажнике
поэтому содержит оба изменения
исходя из функциональной ветки и
работа по разрешению конфликтов
- Однако, подрывная деятельность не поможет вам
объединить эту работу по разрешению конфликтов
вернуться к ветки функции. Это просто
смотрит на mergeinfo и думает
"эти изменения изначально исходили из
ветвь функции, не нужно объединять
их снова к их происхождению ".
Удаление ветки функции и ребринга дешево и позволяет избежать этой проблемы.
Ответ 2
Мы делаем это часто (SVN 1.5 и выше). Вам просто нужно не повторять эти изменения обратно в ветку.
Чтобы сделать это, просто выполните ряд ревизий, объединив их от магистрали к ветке. Укажите ревизию в сундуке, которую вы сделали реинтеграцией ветки, и пометьте ее как "Только запись слияния" из ревизии магистрали в ветку.
Как только вы сделаете это, вам должно быть хорошо идти.
Изменить
Точка, которую wcoenen приводит из статьи о конфликтах, действительна. Если вы не синхронизируете изменения сундуков в ветку, прежде чем выполнять реинтеграцию, у вас возникнут проблемы с конфликтом. Мы продолжаем синхронизацию ветки и не испытываем никаких проблем с продолжением повторного использования ветки после нескольких повторных целей.
Изменить 2
Сохранение реинтегрированной ветки
(http://svnbook.red-bean.com/en/1.7/svn.branchmerge.advanced.html)
Существует альтернатива уничтожению и воссозданию ветки после реинтеграции. Чтобы понять, почему это работает, вам нужно понять, почему ветвь изначально непригодна для дальнейшего использования после ее реинтеграции.
Ответ 3
Да, вы можете сделать слияние только для записи, чтобы поддерживать ветвь.
См. Сохранение реинтегрированной ветки в книге Subversion.
Ответ 4
Subversion 1.8 позволяет вам неоднократно сливаться между двумя ветвями, в то время как версии 1.7 и более ранние версии не выполнялись. Прочтите примечание к выпуску здесь: http://subversion.apache.org/docs/release-notes/1.8.html#auto-reintegrate.
Ответ 5
Все это зависит от вашего личного мнения и от количества людей, сходящихся в багажник.
Если у вас много слияния людей, то, вероятно, лучше всего объединить ветвь после ее завершения, а затем удалить ее (вы всегда можете получить к ней доступ, возвращаясь к последней версии, где она существовала). Если вы попытаетесь постоянно слиться в этой ситуации, вы просто смутитесь.
Однако, если у вас не так много подсетей, и вы используете subversion 1.5+, вы можете избежать этого, и это может помочь избежать конфликтов слияния.
Конечно, если ваш "багажник" используется в качестве бета-релиза-релиза-релиза, то вы не должны этого делать.