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 master
e develop
branches para a principal base de código (versão gratuita) ao lado master-premium
e develop-premium
branches para a versão paga. Quando uma alteração é feita na versão gratuita e mesclada à master
ramificação (após testes completos develop
, é claro), ela é copiada para a develop-premium
ramificação por meio do cherry-pick
comando 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.