Recientemente se han hecho varias preguntas sobre omisión de cambios al mantener las ramas de publicación en Mercurial. Por ejemplo:Consecuencias del uso de injerto en Mercurial
- Mercurial: Branch specific changes keep coming back after dummy merge
- Why are Mercurial backouts in one branch affecting other branches?
Desde que se introdujo en 2.0, me he preguntado acerca del uso de graft
para evitar este problema. Dado un árbol de revisión de esta manera:
A---B---C---D---E---F---G---H---I---J
Supongamos que tenemos que crear una rama de liberación que se salta el cambio Mal E
.
hg update -r D
hg graft "F::J"
que nos da:
A---B---C---D---E---F---G---H---I---J
\
--F'--G'--H'--I'--J'
- P1: ¿Qué ha pasado aquí? Puedo entender que
transplant
habría generado parches deF::J
, y luego los hubiera aplicado enD
, pero se dice quegraft
usa la combinación de 3 vías en lugar de parches. Entonces ... ¿Cómo funciona eso? ¿Por qué es mejor?
Digamos que ahora arreglo E
, y lo fusiono 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 combinación directa; nada especial allí. M2 está fusionando ramas que tienen "el mismo" cambio (o al menos equivalente) en.
- P2: ¿Es esta fusión sólo una fusión usual de 3 vías usando
D
, yJ'
M1
? - Q3: ¿Ha almacenado/usado mercurial información adicional sobre la operación del injerto para ayudarlo con la fusión?
Y por último ...
- P4: ¿Cuáles son los problemas potenciales con un flujo de esta manera?
Gran pregunta, gran respuesta :). +1 a ambos! –
Gracias Martin. Ese es un pensamiento bastante funky por quien se le ocurrió eso. Tengo la idea, pero necesito resolver el caso general. Supongo que no importa la ruta entre los nodos a los que está injertando desde/hacia? –
@PaulS: creo que todo lo que necesita saber es que el injerto puede copiar los conjuntos de cambios de una manera más sólida que la que puede hacerlo el trasplante. Robusto en el sentido de que se cambian los nombres y que puede resolver conflictos en una herramienta de fusión. Los detalles se encuentran en las extrañas fusiones que tiene, pero espero que no sean esenciales para comprender el uso diario del injerto. :-) –