2010-12-09 9 views
6

Vengo del fondo de CVS.La actualización de Mercurial sobrescribirá mis cambios en lugar de fusionar

Actualmente, tengo 2 repositorios mercurial desarrollados en paralelo. hello-world-bugfix y hello-world-feature (Éste está siendo clonado a partir de hello-world-bugfix)

Ahora, yo quiero fusionar el código de error fijo de hello-world-bugfix a hello-world-feature, por lo que final del día, voy a tener un archivo fusionado.

[BUG2 BUG2 BUG2] 

START 
[BUG1 BUG1 BUG1] 

[FEATURE2 FEATURE2 FEATURE2] 

Así es como lucen todas las cosas antes, jalando y fusionándose. Los siguientes dos archivos ya se han confirmado.

alt text


alt text


Ahora, realizo trago de hello-world-feature, para extraer los cambios de hello-world-bugfix. alt text

Luego, realizo la actualización, con always merge opciones activadas. alt text

Aquí está mi archivo fusionado ???

[BUG2 BUG2 BUG2] 

START 
[BUG1 BUG1 BUG1] 

Parece que se ha sobrescrito mi [FEATURE2 FEATURE2 FEATURE2] compromiso anterior.

Parece que no debería realizar el paso de actualización, que no se fusionará con featurebug, pero sobrescribir feature lejos con bug. ¿Cuál es el siguiente paso correcto que debo hacer después de tirar? (a través de TortoiseHg), para que pueda obtener el código de reparación de fallas, y mantener el código de función allí?

Aquí es la vista depósito final de hello-world-feature alt text

Respuesta

7

La opción "Siempre fusionar" no hace lo que usted cree.

Solo combina los cambios no confirmados.

Al actualizar, los archivos confirmados se reemplazan con la nueva versión.

Para fusionar los cambios confirmados, es decir. fusionar ramas, necesita hacer una fusión explícita.

Por lo tanto, seleccionaría el conjunto de cambios BUG2 BUG2 BUG2 en el registro, luego haga clic con el botón derecho en el conjunto de cambios FEATURE2 FEATURE2 FEATURE2 y haga clic en Fusionar, y siga las instrucciones.

Permítanme ampliar lo que hace la casilla de verificación "Combinar siempre".

Digamos que tengo dos conjuntos de cambios en mi repositorio, actualizo los primeros, luego comienzo a modificar uno de los archivos.

En algún momento, decido que sería mejor haber empezado desde el otro conjunto de cambios, así que quiero actualizarlo, manteniendo mis modificaciones.

Si yo simplemente una actualización, con cambios no confirmados, consigo este cuadro de diálogo cuando trato de actualizar:

Confirm Update

Sin embargo, si marca la casilla de verificación "Siempre fusionar (cuando sea posible)" , simplemente asumirá que hice clic en el botón Combinar en ese cuadro de diálogo y no me preguntaron.

Por lo tanto, "Combinar siempre" no tiene ninguna función en los archivos comprometidos, no introducirá fusiones para usted, solo intentará mover sus cambios locales junto con la actualización.

Cuestiones relacionadas