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

0

Por exemplo, tenho o seguinte histórico no meu repositório HG (ou seja, criei uma ramificação na rev. 80), chamada "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 eu quero ter dois repositórios, "Projeto" e "Modelo". O repositório "Project" deve ter o ramo principal do "Project X" e o repositório "Model" deve ter o branch criado no rev. 80 (i.e., 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 eu 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
    
por kokbira 05.03.2014 / 20:22

1 resposta

1

Você pode tornar o "caminho difícil" muito mais fácil e mais curto (supondo que você não renomeie a ramificação nomeada como padrão default no repositório do Modelo)

  1. Clone o repositório "Projeto X" para (novo) repositório "Projeto", intervalo 0:80 revisões hg clone -r 80 ProjectX Project (use caminhos reais em vez de nomes)
  2. Clone completo "Projeto X" em "Modelo" hg clone -r 80 ProjectX Model
  3. Ativar a extensão histedit (global ou somente no modelo)
  4. Execute o histedit com o hash do changeset 0 como parâmetro e "solte" todos os changesets antes de rev 80
por 06.03.2014 / 03:17