Следующая разработка на основе магистральных каналов, показанная ниже:
Предположим, что из master
(ствола) созданы две краткосрочные ветви функций (f1
и f2
). Для реализации файлы исходного кода, используемые для этих ветвей, в этом сценарии перекрываются.
Предположим, что существует один конвейер CI/CD для master
(магистраль), который срабатывает при изменении кода.
Один из возможных конфликтов кода является функциональным, f1
может удалить или изменить существующий исходный код, который использует f2
.... Это не конфликт VCS.
Разработчик1 выполнил git commit
на f1
(на ноутбуке) в t
время и еще не push
Разработчик2 выполнил git commit
на f2
(на ноутбуке) в t+24
время и еще не push
Насколько я понимаю, ниже приведен сценарий в файле истории фиксации ноутбука перед отправкой:
В приведенном выше сценарии f1
можно объединить с master
, что представляет собой простое ускоренное слияние. Таким образом, master
и f1
будут указывать на моментальный снимок фиксации 156b4bf
после этого слияния, как показано ниже:
Конвейер CI/CD запускается, так как слияние прошло успешно, без конфликтов
Но когда через 24 часа произойдет f2
фиксация, Git выполнит 3-стороннее слияние с использованием 3 снимков (156b4bf
, 96f5b29
и c435356
), как показано ниже:
Конвейер CI/CD снова запускается, если слияние прошло успешно. Насколько я понимаю, Git должен блокировать трехстороннее слияние из-за функционального конфликта.
1) Используя Git, выявляет ли ускоренная перемотка вперед / трехстороннее слияние функциональный конфликт?
2) Если да, существуют ли какие-либо другие сценарии конфликтов, не связанные с VCS, которые рассматриваются ApartCI? что Git не может... если да, то как?
Примечание. Использование рабочего процесса Gitflow не планируется< /эм>