¿Rama de desarrollo y testing en el model de ramificación Git de @ nvie?

He leído sobre el model de ramificación de Gitflow y gitflow de @ nvie y creo que este es un buen model para usar en un proyecto (aplicación web) en el que estoy trabajando actualmente.

Soy el desarrollador principal del proyecto y desarrollo en un entorno local (parecido al MAMP). Cada vez que hice algo para mostrarle al cliente, comprometí mi trabajo y lo envié a un server central de Git. A partir de ahí lo despliego a un server conectado a internet. Entonces mi cliente puede ver los cambios.

Un segundo desarrollador acaba de comenzar a trabajar en el proyecto. Desarrolla funciones individuales a la vez y las envía al host central de Git cuando están lists. Repaso su trabajo antes de implementarlo.

Actualmente, todas las confirmaciones se realizan en la twig master y se implementan en el único entorno alojado. En el futuro me gustaría tener un entorno de producción (para uso real), entorno de testing (para probar nuevas versiones de la aplicación justo antes de su lanzamiento) y un entorno de desarrollo (donde puedo mostrar las características que están acabadas o todavía en curso para el cliente). Creo que el entorno de producción se implementaría desde el master , mientras que el entorno de desarrollo se desplegaría desde el develop .

Las preguntas que tengo son las siguientes:

  1. A menudo trabajo en varias tareas al mismo time. Cuando una parte de una característica está list, a veces quiero mostrársela a mi cliente antes de continuar trabajando en esa function. Sin embargo, a mi entender, una característica (twig) solo se fusionaría para develop cuando esté terminada y progtwigda para su lanzamiento. ¿Cómo puedo mostrar las características que están en progreso (o que aún no están progtwigdas para su lanzamiento) a mi cliente (en el entorno de desarrollo)?

  2. ¿De qué twig debo implementar en el entorno de testing? ¿Debo elegir manualmente la twig de lanzamiento de ese momento, o podría haber una twig de testing dedicada?

Aquí está mi opinión sobre esto:

  1. Puede implementar la twig de características que desea mostrar en el entorno de desarrollo. Simplemente recuerde desplegar la twig de desarrollo después de que el cliente haya visto la nueva característica.

  2. Para el entorno de testing, utiliza la twig de publicación. Una vez que haya finalizado el período de testing y haya lanzado su aplicación, implementará la twig principal en el entorno de testing hasta el próximo calendar de publicación.

Descargo de responsabilidad : soy el desarrollador de git-flow (Edición AVH)
Lo que debe recordar es que el software original de gitflow no elimina la function remota y libera las twigs. Por lo tanto, cuando finaliza una function o versión con el flujo de git original, debe eliminar manualmente las twigs remotas. En git-flow (AVH Edition) el software se ocupa de ello.

Las twigs de características se pueden cambiar en cualquier momento con 1 command (checkout git). A veces (en los Rails, modo de desarrollo, mantengo el server de la aplicación y cambio el código sin siquiera reiniciar el server). Independientemente de la twig en la que me encuentre, todavía estoy en modo 'desarrollo'.
Así que cambia a la twig que quieras y haz una demostración de eso. luego vuelve al maestro o a la twig que quieras.
Inicialmente trabajé todo en master en algunas organizaciones pero ahora hago todo mi trabajo: características, tareas o errores en las sucursales. A menudo labelré el nombre de la sucursal y / o enviaré el text con la identificación del sistema de seguimiento (Pivotal Tracker en nuestro caso).
El truco es mantener las sucursales al día con la búsqueda frecuente de git de los últimos maestros master y git merge (mientras se encuentre en la twig 'topic').

Para los otros entornos, tengo remotos configurados, por ejemplo, mycoolapp-stage y les envío el código por separado. Tengo aproximadamente 6 controles remotos diferentes para 1 aplicación, 4 de ellos utilizados para las testings.

En cuanto a las testings, el verificador puede networkingucir los cambios y trabajar localmente en un entorno de desarrollo (funciona tanto para progtwigdores como para probadores de control de calidad) o simplemente puede usar un área de testings o etapas a la que presionas el código como control remoto.

En general, trabajas en twigs y luego empujas cosas a través de master. Ver más información en mi respuesta sobre el process en git branch, fork, fetch, merge, rebase y clone, ¿cuáles son las diferencias?