Mercurial: ¿Retirar los sets de cambios públicos y volver a postularse a una nueva sucursal pública?

Estamos usando Kiln y Fogbugz; Se supone que Kiln permite a la perfección que git y hg trabajen juntos. Sin embargo, nos encontramos con un problema donde las twigs de git se tratan como marcadores en mercurial; no captamos esto en nuestro repository hasta que los cambios fueron empujados, y ahora las twigs están un poco contaminadas.

Tengo sets de cambios públicos en nuestra twig pnetworkingeterminada que deberían estar en una twig personalizada. Puedo respaldarlos, pero necesito volver a aplicarlos a la otra twig pública. Me preocupa volver a basar porque estos son cambios públicos.

¿Cuál es la mejor manera de manejar esta situación?

Editar: pensé que podría convertir los sets de cambios en un parche utilizando queues mercuriales, pero los sets de cambios no se pueden modificar porque son públicos. Tampoco puedo hacer hg strip por razones similares.

En Mercurial, utiliza hg graft para copyr (también llamado a veces selección de cereza ) sets de cambios de un lugar a otro. Se utiliza con frecuencia para respaldar una corrección de errores en una twig de mantenimiento cuando la corrección de errores se cometió en la twig incorrecta por crash.

Lo usas así:

 $ hg update correct-branch $ hg graft your-commit 

Esto recreará your-commit como hijo de correct-branch , de forma similar a la import de your-commit en MQ, mostrando el parche, actualizando a correct-branch y presionando el parche. La ventaja del injerto es que utilizará combinaciones de tres vías internamente para ofrecer una mejor resolución de conflictos. Es realmente la misma manera que hg rebase funciona.

Me gustaría promocionar el comentario de torek a una respuesta hecha y derecha para hacerlo más visible.

Como señala, el command hg phase (con el indicador –force) puede reparar la situación cuando mercurial cree que el set de cambios se ha hecho público. Por supuesto, quiere asegurarse de que tiene razón sobre si se ha compartido primero.

Me encontré con un problema técnico en el que mercurial marcaba una twig no expulsada como pública, y esto facilitaba la reparación con qimport (o podía haber usado strip).