Digamos que estou escrevendo duas versões diferentes do mesmo software / programa / aplicativo / script e as armazenando sob controle de versão. A primeira versão é uma versão "Básica" gratuita, enquanto a segunda é uma versão "Premium" paga que pega a base de código da versão gratuita e a expande com alguns recursos de valor agregado extras. Quaisquer novos patches, correções ou recursos precisam encontrar o caminho para as duas versões.
Atualmente, estou pensando em usar mastere developbranches para a principal base de código (versão gratuita) ao lado master-premiume develop-premiumbranches para a versão paga. Quando uma alteração é feita na versão gratuita e mesclada à masterramificação (após testes completos develop, é claro), ela é copiada para a develop-premiumramificação por meio do cherry-pickcomando para mais testes e depois mesclada master-premium.
Esse é o melhor fluxo de trabalho para lidar com essa situação? Existem problemas, advertências ou armadilhas em potencial a serem observados? Existe uma estratégia de ramificação melhor do que a que eu já criei?
Os seus comentários são extremamente apreciados!
PS Isto é para um script PHP armazenado no Git, mas as respostas devem se aplicar a qualquer idioma ou VCS.