Можно ли изменить родителя ветки SVN?

Есть проект, для которого есть 3 "издания". Один используется для разработки, второй используется тестировщиками для тестирования новой функциональности перед выпуском новой версии, а последний действительно используется людьми.

В настоящее время редакция для разработки установлена ​​в качестве ствола в SVN. Тестовая версия - это ветка ствола, а "живая" - ветка тестируемой.

Development
     |
     v
  Testing
     |
     v
   Live

Изменения вносятся постепенно в проект разработки и затем объединяются в ветку тестирования в группы (одна ревизия тестирования может содержать изменения нескольких ревизий разработки). Затем, как только изменения будут признаны правильными, они объединяются в живую ветку и публикуются.

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

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

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

   Development
        |
   -----------
   |         |
   v         v
Testing    Live

Можно ли переключить ветвь Live, чтобы иметь транк в качестве родителя (в отличие от ветки Testing) без потери истории коммитов?

1 ответ

Решение

Нет. Филиалы в SVN - просто копия. Вы не можете изменить место, из которого вы что-то скопировали. Просто так оно и есть. Источник копии является частью истории; таким образом, по определению вы не сможете изменить источник ветки, не потеряв часть истории.

Однако, являясь просто копией, источник копии не имеет значения. Ничто не мешает вам слиться прямо из магистрали в ветку. При последующем слиянии из ветки Testing в Live вы можете получить конфликт для версии с двойным слиянием (SVN может быть достаточно умен, чтобы избежать этого конфликта), но конфликт должен быть легко разрешен с помощью инструмента слияния с тремя путями. Вероятно, инструмент даже разрешит это автоматически для вас.

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

Другие вопросы по тегам