Digamos que estoy escribiendo dos versiones diferentes del mismo software / programa / aplicación / script y las guardo bajo el control de versiones. La primera versión es una versión "básica" gratuita, mientras que la segunda es una versión "premium" de pago que toma la base de código de la versión gratuita y la amplía con algunas características adicionales de valor agregado. Todos los parches, arreglos o funciones nuevos deben encontrar su camino en ambas versiones.
Actualmente estoy considerando usar mastery developsucursales para la base de código principal (versión gratuita) junto con master-premiumy develop-premiumsucursales para la versión paga. Cuando se realiza un cambio en la versión gratuita y se fusiona con la masterrama (después de una prueba exhaustiva, por developsupuesto), se copia a la develop-premiumrama a través del cherry-pickcomando para más pruebas y luego se fusiona master-premium.
¿Es este el mejor flujo de trabajo para manejar esta situación? ¿Hay problemas potenciales, advertencias o dificultades a tener en cuenta? ¿Existe una mejor estrategia de ramificación que la que ya se me ocurrió?
¡Su retroalimentación es muy apreciada!
PD: Esto es para un script PHP almacenado en Git, pero las respuestas deberían aplicarse a cualquier lenguaje o VCS.