#svn
#svn
Вопрос:
Мне нужно запустить ветку (бета), основанную на другой ветке (альфа), вы можете видеть это как бета-версию, основанную на альфа-версии. Эти две ветви в конечном итоге будут объединены с магистралью, сначала альфа-ветвью, а затем бета-ветвью.
Вариант 1: Создайте альфа-ветвь из магистрали, а затем создайте бета-ветвь из alpha. Бета-версия будет периодически обновляться наборами изменений из alpha, поскольку бета-версия должна содержать все функциональные возможности из alpha (пункты 1 и 2).
/----бета---/(1)---/(2)----- бета------- / / / /------------ альфа--/------/--- / ------------магистраль---------------------------------------------->
Вариант 2: создайте альфа-версию из магистрали, а затем бета-версию из магистрали. Обновите бета-версию с изменениями альфа-версии, чтобы обе версии имели одинаковую функциональность (пункт 3). После этого бета-версия будет периодически обновляться наборами изменений из alpha, потому что бета-версия должна содержать все функциональные возможности из alpha (пункты 4 и 5).
/--/(3)--бета----/(4)--/(5)---- бета----- / / / / /-------o--/--alpha------/-----/--- / / ----------------магистраль------------------------------------------->
Обе ветви будут объединены обратно в магистраль.
Какой вариант лучше?
Ответ №1:
Вариант 1, поскольку он устраняет ненужное в этом случае слияние с альфа-версии на бета-версию при запуске, а физический путь соотносится с логическим
Комментарии:
1. Не возникнет проблем при интеграции «beta» с магистралью, потому что «beta» начинается с «alpha» вместо «trunk»?
2. Не создаст никаких проблем на любом пути повторной интеграции — поскольку SVN обнаружит изменения между листами, история имеет (почти) нулевое значение для этого задания
3. Таким образом, SVN выполнит слияние, просто игнорируя родословную, например, применив патч. Я все еще обеспокоен конфликтами, которые могут возникнуть при слиянии «бета» через магистраль, потому что слияние «альфа» через магистраль ранее. SVN справляется с этим?
4. SVN будет использовать общего предка в качестве точки отсчета для двух ревизий. Предварительно примененные исправления обнаружены и не применены повторно (по крайней мере, в моих разных слияниях с CI)