Este es el problema exacto que tengo con gitflow y el flujo de GitHub, y parece que con las aplicaciones web esto sucede a menudo, o más como la norma. Parece que resolvería este problema retroactivamente (mencionado anteriormente) o proactivamente (ejemplo a continuación).
He creado 'ramas de paquete' además de las ramas estándar de gitflow. El paquete consta de todas las características que están listas para uat / qa. Se crea una lista de características uat / qa. Estos se fusionan en el paquete temporal, y ese paquete se implementa en uat / qa. Cualquier corrección de errores ocurre en la rama de características original, y eso se vuelve a integrar en el paquete y se implementa. Esto separa la próxima versión y permite probar esas características juntas antes de que encuentren su camino hacia la rama de desarrollo. Las ramas aprobadas obtienen una solicitud de extracción para desarrollar, siguiendo el proceso de gitflow. Las funciones listas para prueba se pueden agregar o eliminar de la rama de paquete temporal y volver a implementar.
- Esto mantiene al maestro siempre reflejando el estado listo para producción (puede automatizarse con gancho)
- El desarrollo siempre refleja el último candidato de lanzamiento entregado (y probado)
Los contras incluyen administrar la lista de paquetes y agregar otro tipo de rama; Sin embargo, además de la solución retro, que creo que es demasiado tarde, esta parece ser la solución más viable.
Con un complemento de GUI, podría ser óptimo marcar las ramas de características por implementación de paquete, teniendo en cuenta la automatización.