Estrategia de branching y release con git-flow

En el proyecto que estoy trabajando actualmente estamos usando Git flow, que son unas serie de extensiones de Git para soportar la estrategia de branching y release propuesta por Vincent Driessen.

El trabajo se divide en dos ramas principales: develop y master.
Las nuevas funcionalidades se van implementando en ramas llamadas feature que derivan de develop.
Cuando quiero liberar código uso las ramas de release y por último si tengo un bug grave en producción utilizo las ramas de hotfix.

El funcionamiento usando git flow es muy sencillo, por ejemplo si quiero agregar OAuth a mi producto corro este comando:

git flow feature start oauth

Eso genera el branch feature/oauth basada en develop y hace el switch al branch creado, ahí voy haciendo mis commits y cuando termino hago:

git flow feature finish oauth

Eso me hace el merge a develop, y elimina el branch oauth.

Una vez que implementé las funcionalidades que me propuse liberar, corro este comando para preparar mi release:

git flow release start v0.2.5

Esto me genera el branch “release/v0.2.5” también basado en develop.

Una vez que actualizo la versión en el producto, el read me y termino cualquier otra tarea necesaria para liberar, uso el mismo comando pero cambiando start por finish.
En este caso se hace merge a master y a develop también, se crea el tag “v0.2.5” para el release y se elimina el branch.

Si se detecta un falla importante en producción, uso el comando con hotfix, en este caso el branch creado se basa en master, al finalizar y correr el comando de cierre de git flow se comporta igual que con el release: se hace merge a master y a develop, se crea un tag y se elimina el branch.

Esta forma de trabajar me viene resultando muy cómoda.
Las únicas dos cosas a tener en cuenta son:

– los branches tienen que cortos, más se demore en finalizarlos más probabilidades de tener un merge complicado por conflictos

– cuando se corre el comando de finalización se borra el branch local pero no los remotos, o sea que si hiciste push vas a tener que borrarlo a mano

Esta imagen sintetiza muy bien el flujo de trabajo:

Git Flow

Más info en:

Installing git-flow

Using git-flow to automate your git branching workflow

– ¿Qué es git-flow?

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s