Pregunta:
El año pasado, la mayor parte del resto de mi grupo (de ingenieros con los que trabajo) terminó decidiendo que las burbujas de fusión en realidad no son tan malas.
Como mínimo, veo que otros desarrolladores no consideran que el rebase valga la pena el esfuerzo necesario para evitar las burbujas de fusión al fusionar solicitudes de extracción (a veces muy mal estructuradas).
¿Por qué no es tan malo tener burbujas de fusión en tu historial de confirmaciones?
Para ser claros: ¡ no estoy preguntando si las burbujas de fusión son malas o no! Estoy pidiendo por los que no son malos.
Respuesta:
En primer lugar, como ya ha señalado, requieren menos trabajo. En mi opinión, la carga recae en el proceso que requiere más trabajo, en este caso el proceso de rebase, para demostrar su utilidad superior.
El mayor argumento es que las fusiones conservan un historial preciso, ya que el desarrollo realmente sucedió. Un historial lineal y consolidado es útil en un nivel superior de abstracción, como los equipos de calidad y lanzamiento. Es todo lo contrario en un equipo de desarrollo, donde es extremadamente útil saber exactamente cuándo y cómo se introdujo un error. ¿Ocurrió debido a una fusión o el error estuvo allí durante el desarrollo y simplemente me lo perdí? Si la historia se destruye, no tiene forma de responder preguntas como esa.
La otra razón es que fomenta la cooperación fluida en otras topologías además de en estrella. En el control de versiones centralizado, la única forma de compartir su trabajo es enviarlo al servidor central. Con distribuido, es posible que dos personas trabajen juntas durante uno o dos días, separándose entre sí, y luego empujan al servidor central una vez que está listo para el grupo más grande. Esa es una forma muy eficaz y natural de querer trabajar.
Si los desarrolladores tienen que preocuparse por si la confirmación x nueva contiene los mismos cambios que la confirmación y que extrajeron de otra persona durante el desarrollo activo, eso crea una carga cognitiva que desalienta ese modo de cooperación. Hacer fusiones descarga ese esfuerzo de seguimiento en el software de control de versiones, por lo que lo tenemos.