Что произойдет, если между последним слиянием и слиянием реинтеграции в SVN будет зафиксирован коммит?

Обычно при реинтеграции ветки SVN в транк мы создаем такую ​​историю:

trunk   A---B---D---F---H
             \       \ /
branch        C---E---G---X

где G это слияние, H является слияние реинтеграции, и X удалить ветку функции. Я также понял, что есть разница в алгоритме слияния, который SVN использует для G а также H, Все идет нормально.

Однако меня беспокоит одна вещь: в этом ответе приведена документация SVN о том, что происходит с слиянием реинтеграции, как: "И фактически, он делает это, сравнивая последнее магистральное дерево с последним деревом ветвей: результирующая разница - это именно ваши изменения ветвей"!"

поскольку trunc + changes from branch = trunc + (branch - trunk) = branchЯ делаю вывод, что записанное состояние после слияния реинтеграции всегда точно совпадает с записанным состоянием в конце ветви.

Теперь рассмотрим эту историю:

trunk   A---B---D---F---H---I
             \        \   /
branch        C---E-----G-----X

Исходя из вышеизложенного, я предполагаю, что изменения из коммита H просто теряются, если I это слияние реинтеграции. Это правильно, или я что-то пропустил?

1 ответ

Решение

Subversion знает, что последняя версия синхронизации Fтак что посчитайте разницу между trunk@F а также branch@G и затем примените это к рабочей копии.

Если целевая рабочая копия проверена ревизией F, затем реинтеграция пройдет гладко (без конфликтов) и после этого вы обновите wc до H (возможные конфликты) и быть в состоянии совершить.

Если целевая рабочая копия проверена ревизией H, тогда слияние будет произведено поверх H (в этом случае возможны конфликты при слиянии)

В любом случае ничего не будет потеряно.

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