Digamos que estoy escribiendo dos versiones diferentes del mismo software / programa / aplicación / script y las estoy almacenando bajo el control de versión. La primera versión es una versión gratuita "Básica", mientras que la segunda es una versión "Premium" de pago que toma el código base de la versión gratuita y la amplía con algunas características adicionales de valor agregado. Todos los parches, correcciones o características nuevos deben encontrar su camino en ambas versiones.
Actualmente estoy considerando utilizar las ramas master
y develop
para la base de código principal (versión gratuita) junto con las ramas laterales master-premium
y develop-premium
para la versión de pago. Cuando se realiza un cambio en la versión gratuita y se fusiona en la rama master
(después de realizar pruebas exhaustivas en develop
, por supuesto), se copia a la rama develop-premium
a través del comando cherry-pick
para realizar más pruebas y luego fusionado en master-premium
.
¿Es este el mejor flujo de trabajo para manejar esta situación? ¿Hay problemas potenciales, advertencias o dificultades a tener en cuenta? ¿Hay una mejor estrategia de ramificación que la que ya he creado?
¡Tu opinión es muy apreciada!
P.S. Esto es para un script PHP almacenado en Git, pero las respuestas deben aplicarse a cualquier idioma o VCS.