Pregunta ¿Cómo se funden las 3 vías en Mercurial / Meld?


Estoy trabajando en un proyecto en el que tengo un compromiso que introdujo una función con problemas importantes que no se descubrieron de inmediato. Ahora quiero eliminar por completo esa revisión mientras sigo con el trabajo, pero me está costando pasar por esta fusión de 3 vías. Aquí hay un gráfico simplificado de mi proyecto.

o conjunto de cambios: 134: 7f81764aa03a
| etiqueta: consejo
| padre: 128: 451d8a19edea
| resumen: conjunto de cambios resuelto 451d8a19edea
|
| @ changeset: 133: 5eefa40e2a29
| | resumen: (Cambio que necesito mantener)
| |
* recortar 3 commits *
| o conjunto de cambios: 129: 5f6182a97d40
| / resumen: (Cambio que necesito mantener)
|
o changeset: 128: 451d8a19edea
| resumen: (Cambio que introdujo un problema importante)
|
o conjunto de cambios: 127: 4f26dc55455d
| resumen: (el resumen no importa para esta pregunta)

Si entiendo esto correctamente, r127 y r134 son exactamente iguales. Cuando yo hg up -C -r 133 y luego corre hg mergeMeld aparece con tres formas de uno de mis archivos: local, base y otro. local parece ser r133, pero me está costando pasar por alto lo que significa "base" y "otro".


32
2017-10-02 16:52


origen


Respuestas:


Local es r133

Otro es r134

Base es r128 (el antecesor común de r133 y r 134)

Cuando realiza una fusión de 3 vías, compara las tres juntas para ayudarlo a decidir qué llevar y desde dónde. Al ver qué cambio hay en la otra revisión y cómo era el ancestro común, puede tomar una decisión mucho más informada sobre qué conservar y qué cambiar.


34
2017-10-02 16:58



Su pregunta es realmente confusa, pero aquí hay información que puede ayudarlo.

  • ¿Qué es base?

Base es la versión no modificada de la revisión que ha revisado y trabajado actualmente. donde posiblemente otros cambios se hayan desviado (¡puede tener revisiones entre su local actual y la base!). es justo donde está la revisión más cercana donde no se desvió ninguna otra horquilla después (el mismo padre) (en su caso r128)

  • ¿Qué es la cabeza?

Head es la última revisión en control de versiones. si trabajas solo en una sola copia, probablemente sea la base. pero un compañero de trabajo podría haber modificado el mismo archivo y haberlo registrado en el control de la versión, entonces la cabecera es posterior a su base.

  • ¿Qué es local?

Local es tu versión modificada (en tu caso r133)

  • ¿Qué es el otro?

Otro es el tipo de bifurcación / bifurcación que también tiene su Base como principal (en su caso r134)

  • ¿Cómo funciona la fusión de 3 vías?

La fusión de 3 vías funciona (al menos en fusión) jerárquicamente. generalmente de izquierda a derecha de esta manera:

local> base> otro / cabeza

local / base es principalmente trivial porque es justo lo que has modificado

luego puede fusionar sus cambios en la revisión principal o la de su compañero de trabajo o lo que sea.

Puede haber muchas otras / revisiones de la cabeza, pero no es su trabajo fusionarse y, por lo tanto, comparar más de 3 vías no tiene sentido.


11
2017-10-02 17:05