No hay buena forma para seleccionar las revisiones en mercurial (así se llama el flujo de trabajo propuesto). Hay algunas formas no tan buenas de hacerlo: exportar + importar (o el envoltorio de conveniencia alrededor de exportación + importación llamado trasplante), pero el inconveniente es que tienes el mismo conjunto de cambios con hashes diferentes en repositorios múltiples, sin ningún bien forma de representar eso si/cuando intenta mover los cambios otra vez.
Mejor es modificar su flujo de trabajo para que cuando quiera pasar de un cambio esté bien moviéndose sobre todos sus antepasados, y lo hace al elegir conscientemente los antepasados de un conjunto de cambios.
Por ejemplo, si usted está fijando un error que está en el repositorio de desarrollo, y los tres "otros" repositorios no solo cambia la revisión padre del cambio del tip
del repositorio de desarrollo. Primero haz un hg update -r THE_REVISION_WHERE_THE_BUG_WAS_ADDED
, luego arregla tu error y luego confirma. Verá un mensaje que dice new head created
, que se espera.
Ahora tienes esa corrección como un conjunto de cambios cuyo único elemento primario es el conjunto de cambios en el que se introdujo el error, que debe existir en los otros 3 repositorios o no tendrían el error. Entonces ahora puede pull
ese nuevo conjunto de cambios en los "3" otros repositorios sin traer todo lo demás en desarrollo con ellos. Y luego hace un rápido hg merge
en cada uno de esos cuatro repositorios que combinan la corrección de errores en su tip
desplegable.
Obtener una idea de cómo estructurar repositorios con funcionalidad común pero personalizaciones en cada uno puede ser un poco complicado, pero si estructura bien, puede hacer todas sus migraciones dentro del repositorio utilizando push, pull y merge y nunca tenga que corregir un error dos veces, tener el mismo código en diferentes conjuntos de cambios o volver a hacer la personalización de un repositorio.
Como nota, el comando bisect, hace un gran trabajo respondiendo a la pregunta "¿dónde se introdujo este error?" Antes de comenzar a solucionarlo.
Esto casi me da lo que quiero, excepto que cuando ocurre un conflicto, obtengo esos archivos .rej en lugar de llevarme una herramienta de combinación. ¿Conoces alguna forma fácil de manejar esos .rej en lugar de analizarlos manualmente y resolver conflictos? – mdonovan2010
Para los lectores más nuevos que buscan resolver el problema: consulte la respuesta actualizada a continuación para obtener una solución integrada y que funcione bien. – Lstor