Consecuencias del uso de injerto en Mercurial
Recientemente ha habido varias preguntas sobre omitir cambios al mantener las ramas de lanzamiento en Mercurial. Por ejemplo
Mercurial: los cambios específicos de la rama siguen volviendo después de la fusión ficticia ¿Por qué los retrocesos mercuriales en una rama afectan a otras ramas?Desde que se introdujo en 2.0, me he preguntado sobre el uso degraft
para evitar este problema. Dado un árbol de revisión como este:
A---B---C---D---E---F---G---H---I---J
Supongamos que necesitamos crear una rama de lanzamiento que omita el cambio del MalE
.
hg update -r D
hg graft "F::J"
dándonos
A---B---C---D---E---F---G---H---I---J
\
--F'--G'--H'--I'--J'
Q1: ¿Qué acaba de pasar aquí? Puedo entender esotransplant
habría generado parches a partir deF::J
, y luego los aplicó aD
, perograft
e dice que @ usa la combinación de 3 vías en lugar de parches. Entonces ... ¿cómo funciona eso? ¿Por qué es mejor? Digamos que ahora arregloE
, y fusionar eso en mi rama de lanzamiento.
--E2-----------------
/ \
A---B---C---D---E---F---G---H---I---J---M1
\ \
--F'--G'--H'--I'--J'---------M2--
M1 es una fusión directa; Nada especial allí. M2 está fusionando ramas que tienen cambios "iguales" (o al menos equivalentes) en.
P2: ¿Es esta combinación solo una combinación normal de 3 vías usandoD
, J'
yM1
? P3: ¿Mercurial ha almacenado / usado información adicional sobre la operación del injerto para ayudarlo con la fusión?Y finalmente..
P4: ¿Cuáles son los posibles problemas con un flujo como este?