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

694
kokbira

Например, у меня есть следующая история в моем репозитории 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 
0

1 ответ на вопрос

1
Lazy Badger

Вы можете сделать свой "трудный путь" намного проще и короче (в предположении, что вы не переименовывает именованную ветку в default 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
Интересно. Я проверю это. ртутный. http://selenic.com/wiki/HisteditExtension kokbira 10 лет назад 0
Нет, histedit не работает :( - "histedit не может редактировать историю, которая бы потеряла узлы" kokbira 9 лет назад 0