Git-flow

Git-flow es una forma muy inteligente de organizar el trabajo usando GIT. Como saben los que han leído mi blog antes, uso git prácticamente todos los días para mantener control de los cambios que hago en los diferentes proyectos que trabajo.

La verdad es que como regularmente trabajo solo o en grupos de uno o dos developers más la necesidad de un sistema bien pensado no ha hecho falta. Ahora estoy trabajando en unos proyectos donde voy a tener que compartir código con varios developers y necesito poder organizar el trabajo para que todo el mundo sepa donde está cada cosa y nos entendamos mejor.

El modelo de git-flow es bastante sencillo aunque el diagrama que puse con este post no se ve tan simple. Para aclarar cuando usas el modelo de git-flow hay una branch principal donde se hace el trabajo, ese se llama ‘develop’. Cada vez que se quiere trabajar en algo nuevo se crea un branch para eso. Estos branches se llaman ‘features/<nombre>. Una vez tenemos listo nuestro software para compartirlo creamos un ‘release’ en el branch de releases.

En este modelo también hay branches para support y para hotfixes. Realmente tiene cubierta casi todas las bases.

Pero ya se lo que estás pensando. Esto suena muy complejo para manejar. La buena noticia es que hay unas extensiones para git que hacen usar este modelo súper fácil.

Por ejemplo cuando creas un repo nuevo solo tienes que correr:

$git flow init

después de contestar unas preguntas (usa los defaults) tu repositorio queda listo para usarse con este modelo. Ahora cuando quieres trabajar en un ‘feature’, digamos añadir login de facebook a tu site (si eres loco), solo tienes que correr:

$git flow feature start feacebook-login

esto se encarga de crear el branch correcto, una vez acabes corres:

$git flow feature finish facebook-login

y git flow hace los merge y se encarga de todo.

Esta semana empecé a usar este modelo de organización y hasta ahora me está gustando. Aquí dejo algunos links relacionados.