¿Cómo dividir ramas en un repositorio mercurial para crear otros repositorios usando comandos HG?

¿Cómo dividir ramas en un repositorio mercurial para crear otros repositorios usando comandos HG?

Por ejemplo, tengo el siguiente historial en mi repositorio de HG (es decir, creé una rama en la revisión 80), denominada "Proyecto X":

Project X Workbench:
-------------------------------------------------------------
·   85: Project X: version Z stable
·   84: Project X: improvements based on Project Model #3
| ·   83: Project Model: improvements #3
| ·   82: Project Model: improvements #2
| ·   81: Project Model: improvements #1
|_·   80: Project Model: created
·   79: Project X: code improvements
·   78: Project X: version Y stable
|   
[...]

Ahora quiero tener dos repositorios, "Proyecto" y "Modelo". El repositorio "Proyecto" debe tener la rama principal del "Proyecto X" y el repositorio "Modelo" debe tener la rama creada en la rev. 80 (es decir, de la rev. 80 a la rev. 83):

Project Workbench:
-------------------------------------------------------------
·   81: Project X: version Z stable
·   80: Project X: improvements based on Project Model #3
·   79: Project X: code improvements
·   78: Project X: version Y stable
|   
[...]

Model Workbench:
-------------------------------------------------------------
·   3: Project Model: improvements #3
·   2: Project Model: improvements #2
·   1: Project Model: improvements #1
·   0: Project Model: created

¿Cómo puedo hacer eso usando los comandos HG? ¿O puedo hacerlo sólo "por las malas"?

Hard way:
---------
1. create another repository named "Model"
2. rev1 = 80, rev2 = 0
3. update "Project X" to (rev1 + rev2)
4. copy "Project X" code to "Model" folder
5. commit "Model" as rev2 using the same comments of "Project X" on (rev1 + rev2)
6. rev2++
7. go back to step 3 while rev2 < 4
8. on "Project X" strip rev1 and all its descendants

Respuesta1

Puede hacer que el "camino difícil" sea mucho más fácil y corto (suponiendo que no cambie el nombre de la rama nombrada a la predeterminada defaulten el repositorio de modelos)

  1. Clonar el repositorio "Proyecto X" al (nuevo) repositorio "Proyecto",rangoRevisiones 0:80 hg clone -r 80 ProjectX Project(use rutas reales en lugar de nombres)
  2. Clonlleno"Proyecto X" en "Modelo"hg clone -r 80 ProjectX Model
  3. Habilitar la extensión hiseditit (globalmente o solo en el modelo)
  4. Ejecute histedit con el hash del conjunto de cambios 0 como parámetro y "elimine" todos los conjuntos de cambios antes de la revisión 80

información relacionada