Я пытаюсь принять решение о лучшей стратегии ветвления для проекта веб-приложения. Вот что я придумал до сих пор, и я был бы очень признателен за любые комментарии и впечатления.
То, как я вижу это, есть две основные стратегии ветвления: "ветвь по выпуску" и "ветвь по признаку".
"Филиал по версии" . Разработка происходит на багажнике. Когда время релиза близко, для этой версии создается ветка. Затем эта ветвь стабилизируется/тестируется и, наконец, производится выпуск. После релиза ветвь объединяется обратно в багажник, сохраняя при этом освобожденную ветвь для исправления ошибок. Применяется исправление ошибок, затем оно сливается в туловище (если разработка на туловище не затмила ошибку другими способами). Новые функции добавляются в магистраль и не влияют на ветвь релиза. Когда приближается новое время выпуска, создается новая ветвь release a.s.o.
"Филиал по функциям" . Строка всегда является "производственной" ствол (код, который является живым). Исправления исправляются непосредственно в багажнике. Функции для следующей версии разрабатываются в ветких функций. Исправления периодически объединяются в ветки функций. Когда приходит время релиза, ветки признаков объединяются в багажник, и цикл жизни продолжается.
Теперь, как я вижу, большая практическая разница между этими двумя стратегиями заключается в том, что "по версии" позволяет вам скомпоновать различные производственные версии вашего программного обеспечения (когда клиент A имеет версию 1 и клиентскую версию B версии 1.5, клиент является платным клиент в этом случае). В отличие от стратегии "по функциям" вы можете поддерживать только текущую производственную версию (все клиенты используют последнюю версию).
Так как в типичном веб-приложении все клиенты используют ту же самую "последнюю" версию (поскольку все они имеют доступ к одному и тому же серверу), я бы предположил, что подход "по функциям" наиболее часто используется. Это устраняет необходимость объединения "по иерархии", скажем, когда исправление должно быть применено ко всем 3 версиям выпуска.
Итак, мой текущий статус заключается в том, что я должен пойти с функцией "branch by feature". Если это имеет значение, моя команда не очень квалифицирована.