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