Cabecera personalizada

El blog de Mikel Niño
Emprendimiento digital, startups, Big Data Analytics y nuevos modelos de negocio

Git-Flow, un modelo de uso eficiente de Git ideado por Vincent Driessen

Gracias a Gorka Maiztegi de Magna SIS llego a la referencia de Git-Flow, un modelo de uso de la herramienta open-source de control distribuido de versiones Git, que fue ideado en por Vincent Driessen como un método propio para utilizar dicha utilidad de manera más eficiente, y que el propio Vincent difundió en enero de 2010, tras llevar ya un año madurándolo, en una entrada de su blog (con un esquema muy detallado que ilustra su uso), además de posteriormente publicar el código fuente de las extensiones que programó para las operaciones de alto nivel sobre Git que automatizan la aplicación del modelo.

En la mencionada entrada del blog de Vincent Driessen podemos ver cómo el modelo se estructura en torno a dos ramas nucleares dentro del repositorio "origin": la rama "master" que aglutina las sucesivas versiones ("releases") puestas en producción, y la rama "develop" que recoge el trabajo en marcha de cara hacia una nueva release. Cuando el código en la rama develop alcanza un punto de estabilidad como para ser puesto en producción, se fusiona en la rama master con una nueva etiqueta de versión en producción (0.x, 1.x, 2.x,...).

Además de estas dos ramas principales que tienen un tiempo de vida indefinido, el modelo se complementa con otras ramas de apoyo que tienen un tiempo de vida limitado mientras cumplen su cometido. Estas ramas son de tres tipos:

- Ramas "feature", que se derivan de la rama develop y se fusionarán también en ella. Esta ramas se crean habitualmente en repositorios auxiliares de desarrollo (no en el "origin") y recogen el desarrollo de funcionalidades para versiones futuras, aunque de momento no se sepa a ciencia cierta en qué versión del producto se incorporarán (o de hecho si finalmente serán incorporadas o descartadas).

- Ramas "release", como apoyo para la preparación de una nueva versión a poner en producción. Se derivan de la rama develop y se utiliza en el momento en que dicha rama contiene prácticamente lo que se desea que se convierta en la nueva versión.

- Ramas "hotfix", que se derivan de la rama master y se utilizan para desarrollos sobrevenidos y no planificados de cara a mejorar la versión puesta en producción (por ejemplo cuando se identifica un error crítico en dicha versión).

Además del detalle recogido en la entrada original de Vincent Driessen, podemos encontrar varios recursos online que nos facilitan su comprensión y puesta en práctica, como por ejemplo esta hoja resumen elaborada por Daniel Kummer (disponible en varios idiomas, castellano incluido).

No hay comentarios:

Publicar un comentario