Как разделить ветки в репозитории Mercurial, чтобы создать другие репозитории с помощью команд HG?

Как разделить ветки в репозитории Mercurial, чтобы создать другие репозитории с помощью команд HG?

Например, у меня в репозитории HG есть следующая история (т. е. я создал ветку на версии 80) под названием «Проект 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
|   
[...]

Теперь я хочу иметь два репозитория, "Project" и "Model". Репозиторий "Project" должен иметь основную ветку "Project X", а репозиторий "Model" должен иметь ветку, созданную в rev. 80 (т. е. с rev. 80 по 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

Как это сделать с помощью команд HG? Или это можно сделать только "трудным путем"?

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

решение1

Вы можете сделать свой «сложный путь» намного проще и короче (при условии, что вы не переименовываете именованную ветку в ветку по умолчанию defaultв репозитории Model)

  1. Клонировать репозиторий «Project X» в (новый) репозиторий «Project»,диапазон0:80 ревизии hg clone -r 80 ProjectX Project(используйте реальные пути вместо имен)
  2. Клонполный«Проект X» в «Модель»hg clone -r 80 ProjectX Model
  3. Включить расширение histedit (глобально или только в модели)
  4. Запустить histedit с хешем набора изменений 0 в качестве параметра и «удалить» все наборы изменений до версии 80

Связанный контент