Al desarrollar software, y en especial al hacerlo en equipo, se hace fundamental utilizar un sistema de control de versiones. No voy a entrar en el detalle de porqué es importante, porque eso está más que cubierto en muchos sitios. Lo difícil es encontrar una manera de gestionar la utilización del repositorio y establecer unas reglas para la creación de ramas, commits, versiones y lanzamientos. Ahora que en la Universidad hemos comenzado un proyecto en el que se nos requiere la utilización de Git, y más concretamente en GitHub, nos hemos encontrado con que:
- La mayoría de la gente, al menos en mi Universidad, no saben utilizar control de versiones (lo que daría para hablar un buen rato).
- Es muy difícil establecer unas reglas para que todo funcione bien y no liarse en exceso a la hora de utilizar Git.
Buscando por ahí se ve que, evidentemente, no hay un estándar como tal para este tipo de cosas, pero hay una serie de buenas prácticas, y una que tiene mucho éxito, y que me parece muy sensata, es esta propuesta, que aún no he encontrado bien explicada en español, así que eso voy a hacer, y ya estando en el tema más adelante, seguramente en otro post, hablaré un poco de la numeración de versiones.
La numeración de versiones es otro aspecto que, al no haber estándares y depender mucho del proyecto y de sus arquitectos y desarrolladores, acaba por ser un caos. ¿Una v1.0 es una versión final? ¿Una v1.0.1 es una versión nueva o solo un parche? ¿La v1.10 puede existir o después de la v1.9 se pasa a v2.0? ¿Utilizar x.y.z o x.y? ¿x.y.z.t? ¿Fechas en el nombre? ¿Build numbers? Hay muchísimas posibilidades, y a lo largo del tiempo con seguridad que nos encontraremos con todas ellas en un sitio y otro. Para los proyectos propios se hace necesario tomar una decisión sobre la política a seguir.
Política de Ramificación en Git
El resumen de todo lo que diré a continuación se encuentra en esta imagen, tomada del blog de Vincent Driessen, que habla de cinco ramificaciones a la hora de desarrollar, que me parecen lo más simple y sensato:
Visto así parece un poco abrumador, pero si vamos por partes vemos la lógica. En el post original está mucho más detallado, yo aquí solo quiero hacer un resumen general para poder referirme a él en el futuro.