Recientemente me encontré con un artículo de MSDN sobre ramificación y fusión y SCM: Ramching and Merging Primer - Chris Birmele .
En el artículo dicen que 'big bang merge' es una combinación antipatrón:
Big Bang Merge: diferir la fusión de sucursales hasta el final del esfuerzo de desarrollo e intentar fusionar todas las sucursales simultáneamente.
Me di cuenta de que esto es muy similar a lo que mi empresa está haciendo con todas las ramas de desarrollo que se producen.
Trabajo en una empresa muy pequeña con una persona que actúa como la revisión final + autoridad de fusión de troncales. Tenemos 5 desarrolladores (incluyéndome a mí), a cada uno de nosotros se le asignará una tarea / error / proyecto por separado y cada uno se bifurcará del tronco actual (subversión) y luego realizaremos el trabajo de desarrollo en nuestra rama, probaremos los resultados, escribiremos documentación si es necesario, realice una revisión por pares y un ciclo de retroalimentación con los otros desarrolladores, y luego envíe la sucursal para su revisión + fusión en nuestro software de gestión de proyectos.
Mi jefe, la única autoridad en el repositorio de troncales, en realidad diferirá todas las revisiones de sucursales hasta un solo punto en el tiempo donde realizará revisiones tanto como sea posible, algunas ramas serán devueltas para mejoras / correcciones, algunas las ramas se fusionarán directamente en el tronco, algunas ramas serán arrojadas hacia atrás debido a conflictos, etc.
No es raro que tengamos entre 10 y 20 sucursales activas en la cola de revisión final para fusionarlas en el tronco.
También con frecuencia tenemos que resolver conflictos en la revisión final y la etapa de fusión porque dos ramas se crearon desde el mismo tronco pero modificaron el mismo código. Por lo general, evitamos esto simplemente reorganizando el tronco y volviendo a aplicar nuestros cambios y resolviendo los conflictos y luego presentando la nueva rama para su revisión (rebase del hombre pobre).
Algunas preguntas directas que tengo son:
- ¿Estamos exhibiendo el anti-patrón que se describió como la 'fusión del Big Bang'?
- ¿Algunos de los problemas que estamos viendo son el resultado de este proceso de fusión?
- ¿Cómo podemos mejorar este proceso de fusión sin aumentar el cuello de botella en mi jefe?
Editar: dudo que mi jefe afloje su control sobre el repositorio de troncales, o permita que otros desarrolladores se fusionen con la troncal. No estoy seguro de cuáles son sus razones para eso, pero realmente no planeo mencionar el tema porque ha sido mencionado antes y derribado bastante rápido. Creo que simplemente no confían en nosotros, lo que no tiene sentido porque todo se rastrea de todos modos.
Cualquier otra idea de esta situación sería apreciada.