Wie kann man Zweige in einem Quecksilber-Repository aufteilen, um andere Repositorys mithilfe von HG-Befehlen zu erstellen?

854
kokbira

Ich habe zum Beispiel den folgenden Verlauf in meinem HG-Repository (dh ich habe einen Zweig mit der Rev. 80 erstellt) mit dem Namen "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 |  [...] 

Jetzt möchte ich zwei Repositories haben, "Projekt" und "Modell". Das "Projekt" -Repository muss den Hauptzweig von "Projekt X" haben, und das "Modell" -Repository muss den Zweig auf rev haben. 80 (dh von Rev. 80 bis 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 

Wie kann ich das mit HG-Befehlen tun? Oder kann ich das nur "auf die harte Tour" machen?

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 Antwort auf die Frage

1
Lazy Badger

Sie können den "harten Weg" viel einfacher und kürzer gestalten (in der Annahme, dass Sie benannte Verzweigungen nicht in Standard defaultin Model Repository umbenennen ).

  1. Repository "Projekt X" in (neues) Repository "Projekt" klonen, Bereich von 0:80-Versionen hg clone -r 80 ProjectX Project(echte Pfade statt Namen verwenden)
  2. Clone voll "Project X" in "Model"hg clone -r 80 ProjectX Model
  3. Histedit-Erweiterung aktivieren (global oder nur in Model)
  4. Führen Sie histedit mit dem Hash von changeset 0 als Parameter aus und löschen Sie alle Changesets vor Version 80
Interessant. Ich werde es testen. Quecksilber http://selenic.com/wiki/HisteditExtension kokbira vor 10 Jahren 0
Nein, histedit hat nicht funktioniert :( - "histedit kann keine Geschichte bearbeiten, die verwaiste Knoten würde") kokbira vor 9 Jahren 0