Añadir sets de cambios adicionales antes del set de cambios 0 (cero)?

Tengo un repository Hg con changeset 0 que representa simplemente "agregar .hgignore". Comenzando con el set de cambios 1 Agregué los sets de cambios paso a paso de varias revisiones de Subversion por un script. Luego trabajé durante un time con Hg.

Ahora decidí que se necesitarán algunas revisiones de Svn más, que se encuentran antes en la historia que la revisión inicial (set de cambios 1 en Hg).

¿Es posible insert nuevos sets de cambios entre 0 y 1? Si es así: ¿Cómo?

Puede usar una conversión Mercurial a Mercurial para esto. Necesita habilitar la extensión de conversión para esto. La extensión le permitirá empalmar la historia como parte de la conversión. Esto simplemente significa que puede especificar nuevos padres para un set de cambios existente.

Entonces si comienzas con

$ hg glog @ changeset: 1:aaee9686dedf | tag: tip | user: Martin Geisler <mg@lazybytes.net> | date: Fri Mar 23 15:08:11 2012 +0100 | summary: bar | o changeset: 0:17474bd28fe5 user: Martin Geisler <mg@lazybytes.net> date: Fri Mar 23 15:08:05 2012 +0100 summary: foo 

Primero puede importar las revisiones necesarias desde SVN:

 $ hg update null $ run-your-script.sh 

Esto creará un segundo set de cambios raíz: ahora tiene efectivamente dos historiales disjuntos en su repository. Hice un solo set de cambios donde agregué un file baz :

 $ hg glog @ changeset: 2:515e1292862b tag: tip parent: -1:000000000000 user: Martin Geisler <mg@lazybytes.net> date: Fri Mar 23 15:09:19 2012 +0100 summary: baz o changeset: 1:aaee9686dedf | user: Martin Geisler <mg@lazybytes.net> | date: Fri Mar 23 15:08:11 2012 +0100 | summary: bar | o changeset: 0:17474bd28fe5 user: Martin Geisler <mg@lazybytes.net> date: Fri Mar 23 15:08:05 2012 +0100 summary: foo 

El paso final es unir las historias: queremos que 17474bd28fe5 tenga 515e1292862b como su primer padre. Use hg log --debug para ver los hg log --debug hash de set de cambios completos y crear un file de map de hg log --debug con

 17474bd28fe535c15c7dad3659994ab048146e99 515e1292862ba2d6776294ffb00c533dc6850c66 

Entonces corre

  $ hg convert --splicemap map.txt your-repo your-spliced-repo 

Encontrarás el historial modificado en your-spliced-repo .

Como se preguntó: sí, puedes .

Veo al less 3 forms de hacerlo. Todo – con extensiones

Importar un set de revisiones en la punta, después de la import usar cualquiera de

  • Rebase ( rebase -s tip -d X para cada revisión movible, N operaciones para N revisiones)
  • Histedit (editar desde inicio-revisión, reorderar revisión en editor-window, 1 operación para N revisiones)
  • MQ (select todas las revisiones, importe a MQ, reordere revisiones en patch-stack, edite contenido si es necesario, finalice todas las revisiones, operaciones N + 2 para N revisiones)

Preferiré MQ como la opción más poderosa (dentro de MQ podré pulir los sets de cambios anteriores para eliminar conflictos y | o dividir los cambios de una manera mejor)