Artículos

Git Flow

Escenarios habituales

Entorno Rama
Producción En producción (master)
Preproducción Versión candidata (sta)
Desarrollo Desarrollo actual (dev)

Como este es un ejemplo, puede diferir de la realidad.

Qué espera el producto de tu código

Si sigues un escenario parecido al del ejemplo, probablemente sabes que no puedes simplemente agregar funcionalidades a master ni publicar correcciones urgentes en master sin integrarlas en staging, o viceversa. Por eso debemos seguir una serie de pasos antes de publicar funcionalidades nuevas o correcciones urgentes.

Agregar una funcionalidad

  • Actualiza dev, empieza a programar y luego envía la rama al repositorio remoto.
  • De vez en cuando, integra con staging y despliega.
  • Si algo no funciona en staging, corrígelo en esa rama.
  • Si todo funciona en staging, integra y envía los cambios a master y despliega a producción.

¡Un error en producción!

  • Pasa a la rama master, corrígelo y luego… envía los cambios a master e integra master en staging y development para que esas ramas también queden libres del error.

Mejorar este flujo

Como Staging es nuestro servidor para probar funcionalidades nuevas… La rama sta es nuestra próxima versión que se publicará, o rama de versión candidata.

Introducir un flujo para funcionalidades

  • Crea una rama nueva basada en staging.
  • Si necesitas colaborar, envía la rama de la funcionalidad a origin.
  • Cuando esté terminada, intégrala en staging.
  • Luego elimina la rama de la funcionalidad.

Introducir un flujo para correcciones urgentes

  • Una corrección urgente es una solución que debe aplicarse en producción.
  • Crea una rama nueva basada en master.
  • Programa la corrección e intégrala en master y sta.
  • Después de las dos integraciones, elimina la rama de la corrección urgente.

Hasta aquí…

Si seguimos cada paso, estaremos usando un buen flujo de trabajo.

Pero la creación, integración y eliminación de las ramas de funcionalidades y correcciones urgentes se pueden automatizar.

git-flow

Git Flow es una extensión de Git. Se creó para seguir estos pasos sin complicaciones.

Instalar git-flow

En Linux: sudo apt-get install git-flow

En Mac: brew install git-flow

Inicializar git-flow en un proyecto existente

Ejecuta git flow init en el proyecto.

Se te preguntará qué comportamiento seguir al crear ramas y cómo definir el propósito de cada una.

No importa en qué rama estés ahora; solo recuerda tener actualizadas las ramas master y sta.

Crear una funcionalidad con Git Flow

git flow feature start <FeatureName>
-- code a little bit
git add .
git commit -m “This is a good commit”
git flow feature finish <FeatureName>

Crear una corrección urgente con Git Flow

git flow hotfix start <HotfixName>
-- code the fix
git add .
git commit -m “This is an awesome fix”
git flow hotfix finish <HotfixName>

Conclusión

Usar git-flow mejorará la forma de mantener el código y también ayudará al equipo a seguir el mismo flujo y a evitar errores de los nuevos integrantes mientras lo aprenden. Git Flow es una convención y se puede adaptar a tus necesidades: simplemente crea tu propia copia.

Diapositivas en: https://speakerdeck.com/rec/git-flow

Nota: este artículo no pretende cubrir los conceptos básicos de git-flow ni ser un tutorial sobre cómo usarlo. Es una introducción al tema y, quizá, una invitación a utilizarlo.

“Git Flow” de Rodrigo Espinosa está bajo la licencia CC BY SA. Los ejemplos de código fuente están bajo la licencia MIT.

Foto de sophilabs.

Clasificado en Charlas.

Lecturas relacionadas