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 master
y develop
sucursales para la base de código principal (versión gratuita) junto con master-premium
y develop-premium
sucursales para la versión paga. Cuando se realiza un cambio en la versión gratuita y se fusiona con la master
rama (después de una prueba exhaustiva, por develop
supuesto), se copia a la develop-premium
rama a través del cherry-pick
comando 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.