Допустим, я пишу две разные версии одного и того же программного обеспечения / программы / приложения / скрипта и храню их под контролем версий. Первая версия является бесплатной «Базовой» версией, а вторая - платной «Премиум», которая использует кодовую базу бесплатной версии и дополняет ее несколькими дополнительными дополнительными функциями. Любые новые исправления, исправления или функции должны найти свое применение в обеих версиях.
В настоящее время я рассматриваю возможность использования masterи developответвлений для основной кодовой базы (бесплатной версии) вдоль стороны master-premiumи develop-premiumответвлений для платной версии. Когда изменение вносится в бесплатную версию и объединяется с masterветкой (после тщательного тестирования, developконечно), оно копируется в develop-premiumветку с помощью cherry-pickкоманды для дополнительного тестирования, а затем объединяется в master-premium.
Это лучший рабочий процесс для решения этой ситуации? Есть ли потенциальные проблемы, предостережения или подводные камни, о которых следует знать? Есть ли лучшая стратегия ветвления, чем то, что я уже придумал?
Ваш отзыв очень важен!
PS Это для PHP-скрипта, хранящегося в Git, но ответы должны относиться к любому языку или VCS.