Как разделить ветки в ртутном репозитории, чтобы создавать другие репозитории с помощью команд HG?
Например, у меня есть следующая история в моем репозитории HG (то есть я создал ветку на Rev. 80) с именем "Project 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" должен иметь основную ветвь "Project X", а репозиторий "Model" должен иметь ветку, созданную в rev. 80 (то есть от ред. 80 до ред. 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 default
в репозитории моделей)
- Клонировать репозиторий "Project X" в (новый) репозиторий "Project", диапазон ревизий 0:80
hg clone -r 80 ProjectX Project
(используйте реальные пути вместо имен) - Клонировать полный "Проект X" в "Модель"
hg clone -r 80 ProjectX Model
- Включить расширение histedit (глобально или только в модели)
- Запустите histedit с хэшем набора изменений 0 в качестве параметра и "отбросьте" все наборы изменений до версии 80