Estrategia de modelo de ramificación Git

Estamos tratando de seguir elgitflow modelo de ramificación, pero con un giro.

Tenemos cuatro entornos de servidores en los que se puede implementar el producto, cada servidor cumple un propósito: desarrollo, pruebas internas, pruebas externas y producción.

DevServer, donde los desarrolladores prueban sus diferentes características mientras desarrollan. Los desarrolladores no pueden probar localmente en sus máquinas, tienen que hacer sus cambios en el DevServer para poder probarTestServer, donde los evaluadores de control de calidad prueban varias funciones una vez que los desarrolladores han terminadoReleaseServer, donde las versiones se prueban de forma aislada antes de pasarlas a producciónServidor de producción. El servidor de producción

Estamos tratando de hacer que la resolución de fusión / conflictos sea lo más fácil posible, por lo que creamos dos ramas adicionales que no forman parte del modelo gitflow.

Ramas normales de flujo git

desarrollarMaestro (coincide con 'ProductionServer')característicaXXXreleaseXXX (los lanzamientos semanales se implementan en 'ReleaseServer')

Pero también estas dos ramas que no son estándar y podrían necesitar cambiar ...

dev-release (copia de DevServer)prueba de lanzamiento (copia de TestServer)

Entonces el proceso es el siguiente:

desarrollador crea su 'featureXXX' desde 'desarrollar'múltiples desarrolladores fusionan sus diferentes 'características' en la rama 'dev-release', y la rama 'dev-release' se lanza al 'DevServer' donde todos los desarrolladores pueden probar sus diferentes características. No todas estas características estarán en la misma próxima versiónUna vez que los desarrolladores están contentos con sus pruebas de desarrollo anteriores, fusionan su 'featureXXX' en la rama 'test-release', y esto se implementa en 'TestServer'. No todas las características aquí serán parte del mismo próximo lanzamiento.Una vez que se realiza la prueba en 'TestServer' para featureXXX, el desarrollador puede cerrar su featureXXX en 'desarrollo'.Luego, el desarrollador crea un nuevo 'releaseXXX' o combina su 'featureXXX' en un 'releaseXXX' existente.La rama 'releaseXXX' se implementa en 'ReleaseServer' y se prueba.Una vez que se cierra la prueba 'releaseXXX', se fusiona 'releaseXXX' en desarrollo y master, y se implementa en 'ProductionServer'

¿Estamos estropeando todo el modelo de gitflow?

Aquí está nuestro proceso de ramificación:

Respuestas a la pregunta(2)

Su respuesta a la pregunta