Como dividir ramificações em um repositório mercurial para criar outros repositórios usando comandos HG?

Como dividir ramificações em um repositório mercurial para criar outros repositórios usando comandos HG?

Por exemplo, tenho o seguinte histórico em meu repositório HG (ou seja, criei um branch na rev. 80), chamado "Projeto 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
|   
[...]

Agora quero ter dois repositórios, "Projeto" e "Modelo". O repositório “Projeto” deve ter o branch principal do “Projeto X” e o repositório “Modelo” deve ter o branch criado na rev. 80 (ou seja, de rev. 80 a 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

Como posso fazer isso usando comandos HG? Ou posso fazer isso apenas “da maneira mais difícil”?

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

Responder1

Você pode tornar o "caminho mais difícil" muito mais fácil e curto (supondo que você não renomeie o branch nomeado para padrão defaultno repositório do modelo)

  1. Clone o repositório "Projeto X" para o (novo) repositório "Projeto",faixaRevisões 0:80 hg clone -r 80 ProjectX Project(use caminhos reais em vez de nomes)
  2. Clonecompleto"Projeto X" em "Modelo"hg clone -r 80 ProjectX Model
  3. Habilitar extensão histedit (globalmente ou apenas no modelo)
  4. Execute histedit com hash do conjunto de alterações 0 como parâmetro e "descarte" todos os conjuntos de alterações antes da rev 80

informação relacionada