Pregunta

En nuestra configuración del proyecto Mercurial tenemos 3 ramas en un solo repositorio. Una es una rama de lanzamiento estable donde se realizan correcciones de errores urgentes, uno es una rama de características que contiene un nuevo código de características y una es una rama de UAT donde se fusionan las correcciones de errores y las nuevas características para proporcionar la base de código más actualizada .

Hemos fusionado una carga completa de nuevo código de características en la rama UAT sin ningún problema. Después de eso, fusionamos la rama estable con las correcciones de errores en la rama UAT, pero esto parece tener el efecto de eliminar el nuevo código de características. He descubierto que este problema ha sido causado por alguien fusionando a UAT en un establo hace un tiempo (¡lo que nunca debería haber sucedido!). Ahora, cuando intento fusionar las correcciones de errores en UAT, elimina todo el nuevo código de característica.

¿Hay alguna forma de eliminar los efectos de la fusión de UAT al establo, mientras conserva las correcciones de errores que son descendientes después de esta "mala fusión"? He intentado retroceder la fusión, pero parece que no tiene ningún efecto. ¿Puedo hacer una tira y volver a agregar los conjuntos de cambios requeridos?

Gracias por adelantado.

¿Fue útil?

Solución

De hecho, he logrado solucionar este a través de un poco de prueba y error.

Primero debe habilitar las extensiones de trasplante y MQMerge en su archivo Mercurial.ini. Agregue las líneas que siguen las líneas debajo del encabezado de extensión

   transplant=
   mq=

Clone A su repositorio a una nueva ubicación. En su nuevo repositorio, elimine la fusión incorrecta utilizando el comando de tira para borrar el historial del efecto de la mala fusión se elimina. (Tenga en cuenta que esto eliminará todos los conjuntos de cambios descendientes)

Luego, debe marcar todos los conjuntos de cambios requeridos en orden cronológico del otro repositorio utilizando un comando similar a más abajo

    hg transplant -s "otherRepo" -b "branchName" "changesetHexNumber"

Repita el comando de trasplante para todos los conjuntos de cambios requeridos. ¡Ouila!

NB: Si está utilizando un repositorio central, deberá despojar la fusión de ofensas/cambio de cambios allí también, de lo contrario, su repositorio local pensará que tiene conjuntos de cambios sobresalientes para extraer.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top