Git сливает строки. Архитектуру интегрирует человек

Самый опасный merge часто проходит без конфликтов.

Git видит, что ветки меняли разные строки. Проект собирается, тесты зелёные. Но реализации всё равно могут по-разному отвечать на архитектурные вопросы:

• какая модель является основной; • кто владеет состоянием; • где проходит граница модуля; • какой контракт должен сохраниться; • что происходит при ошибке или повторе; • расширяет ли новая логика существующую систему или создаёт параллельную.

Git обнаруживает текстовые конфликты. Семантические могут пережить merge, сборку и текущий набор тестов.

Если ветки разошлись архитектурно, безопаснее не переносить одну из них целиком, а:

• выбрать authoritative model; • инвентаризировать полезные возможности второй реализации; • переносить их небольшими законченными частями; • проверить contracts, migrations и failure paths; • запустить систему с чистого состояния; • пройти критический сценарий end-to-end; • зафиксировать, что сознательно не переносилось.

Зелёные тесты подтверждают только те ожидания, которые были в них заложены. Они не доказывают, что после объединения получилась одна архитектура.

Git отвечает, можно ли соединить изменения в одном дереве файлов. Инженер отвечает, получилась ли после этого одна понятная система.

Чистый merge — технический факт. Совместимая архитектура — инженерное доказательство.