Estrategias de ramificación de control de versiones: equipo de tamaño mediano y lanzamientos frecuentes

Somos un equipo de tamaño mediano de 10 desarrolladores (3 desarrolladores por proyecto) y deseamos saber qué estrategia de control de versiones sería la óptima.

Ya han hecho una investigación significativa sobre esto y encontraron que tiene sentido "Branch on release" . Sin embargo, implementamos esto antes y descubrimos que viene con una sobrecarga significativa ya que lanzamos cada dos semanas.

Un patrón que apenas se menciona es la bifurcación a pedido con labeldo. La forma en que funciona es que label y toma una instantánea de su código en cada versión para ser probado y publicado. Luego solo bifurque si hay un error que debe corregirse en producción.

He elaborado un diagtwig que ilustra este enfoque, que también incorpora la function de ramificación para características que abarcan múltiples sprints. enter image description here

En cada logging, el código se archiva para el análisis del código, la creación exitosa y las revisiones del código antes de includese en la twig principal.

¿Hay algún inconveniente del que no tengo conocimiento? ¿Por qué este enfoque no está más extendido?

No estoy al tanto de ningún problema importante con ese enfoque.

Recomendaría realizar fusiones regulares desde el tronco hasta las twigs para evitar que se desvíen demasiado del código del tronco. Esto es particularmente importante en las twigs de larga vida.

Es posible automatizar esto utilizando la continuous integration, por ejemplo, progtwigndo una combinación cada noche que falla si la fusión crea conflictos. Esto evitará una fusión desagradable al final cuando queuepses la twig nuevamente en el tronco.

Creo que la principal desventaja de usar tags de esa manera en TFS es que las tags no están versionadas. Si una persona elimina / cambia la label, no hay forma de recuperarla a less que conserve una copy / copy de security de la label. Si sigue esto, mantenga un logging del contenido de la label para que pueda recrearse si es necesario.