Se trata de contexto: con qué frecuencia publicas y qué contiene una publicación.
Aquí hay un poco de un caso de estudio que tuve con mi antiguo trabajo, usando el método B (lo llamamos rama por propósito ).
Para poner la historia en contexto,
- Un lanzamiento consistió en nuevas características en nuestro software: nuevos modos de juego, nuevas funcionalidades, nuevas opciones de configuración.
- El ciclo de lanzamiento fue bastante largo: nuestros clientes eran universidades que se quedarían con un conjunto de características por lo general durante un año.
El desarrollo principal se realizó en el tronco hasta que alcanzamos un estado de función completa para una determinada versión. En ese momento, crearíamos una rama, por ejemplo, nombre del proyecto-enero de 2012 y realizaríamos pruebas de calidad y correcciones de errores en esa misma rama. Una vez que estuviéramos listos para un lanzamiento público, etiquetaríamos el código en esa rama y lo liberaríamos.
Sin embargo, el desarrollo en el lanzamiento no terminó en esa etiqueta. Inevitablemente, tuvimos clientes que encontraron errores o pequeños problemas con el lanzamiento. Entonces, en ese caso, todo lo que tenemos que hacer es volver a esa rama, parchear el código y crear una nueva versión etiquetada de la rama de enero de 2012 que se lanzará, y fusionar las correcciones nuevamente en el tronco.
En nuestro caso, este enfoque fue favorable porque algunos usuarios prefirieron quedarse con versiones anteriores con un conjunto limitado de características, o simplemente porque el costo de implementar en su infraestructura una versión completamente nueva en lugar de una revisión causó algunos problemas.
Entonces las preguntas que tienes que hacerte son:
- ¿Con qué frecuencia libero?
- ¿Mis lanzamientos serán 100% compatibles con versiones anteriores?
- ¿Mis clientes estarán de acuerdo con la actualización completa para corregir errores?
Si liberas a menudo, entonces quizás no valga la pena tener ramas para cada uno de ellos. Sin embargo, si su ciclo de lanzamiento es bastante largo como mi caso de uso anterior, y esa implementación, la compatibilidad con versiones anteriores y los clientes que se aferran a lanzamientos antiguos pueden ser riesgosos, la opción B ciertamente le ahorrará mucho dolor, hará que las cosas sean mucho más fáciles de soportar sus clientes al costo mínimo de lidiar con el desorden de sucursales.