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

0

Por ejemplo, tengo el siguiente historial en mi repositorio HG (es decir, creé una rama en la rev. 80), llamada "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 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 hacer eso solo "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
kokbira
fuente

Respuestas:

1

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

  1. Clonar el repositorio "Project X" en el repositorio (nuevo) "Project", rango 0:80 revisiones hg clone -r 80 ProjectX Project(usar rutas reales en lugar de nombres)
  2. Clonar "Proyecto X" completo en "Modelo"hg clone -r 80 ProjectX Model
  3. Habilite la extensión histedit (globalmente o solo en el Modelo)
  4. Ejecute histedit con el hash del conjunto de cambios 0 como parámetro y "suelte" todos los conjuntos de cambios antes de rev 80
Tejón perezoso
fuente
Interesante. Lo probaré mercurial. selenic.com/wiki/HisteditExtension
kokbira
No, histedit no funcionó :( - "histedit no puede editar el historial que haría huérfanos a los nodos"
kokbira