Модель ветвления

В Sky/IX используется модифицированная модель ветвления Git Flow.

Основная ветка (master) содержит исходный код актуальной стабильной версии ОС. Каждая версия маркируется соответствующим тегом, например: version/0.1.

Разработка новых версий производится в ветке develop, производной от основной ветки. Напрямую сделать коммит в ветки master и develop нельзя, все изменения производятся только через запросы на слияние.

При разработке новых функций для каждой функции от ветки develop порождается новая ветка с префиксом feature, например: feature/cpio. По завершению разработки эта ветка сливается с develop.

Когда принимается решение о выпуске версии, от ветки develop порождается новая ветка с префиксом release и номером версии без указания уровня зрелости, например: release/0.1. Эта ветка необходима для стабилизации версии и вливать в неё новые функции не допускается. Каждый этап стабилизации маркируется соответствующим тегом, например: version/0.1-rc1, вплоть до version/0.1-ga.

После того, как версия протестирована и стабилизирована, производится слияние её ветки с ветками master и develop.

Для быстрых исправлений от ветки соответствующей версии порождается новая ветка с префиксом hotfix, которая впоследствии сливается с ветками master и develop, а также веткой соответствующей версии.

Для сохранения истории коммитов все слияния производятся с флагом --no-ff, который позволяет сохранить историю коммитов c учетом веток, даже если при слиянии история ветки назначения не менялась.