HG コマンドを使用して Mercurial リポジトリ上のブランチを分割し、他のリポジトリを作成する方法は?

HG コマンドを使用して Mercurial リポジトリ上のブランチを分割し、他のリポジトリを作成する方法は?

たとえば、HG リポジトリには次の履歴があります (つまり、リビジョン 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
|   
[...]

ここで、「プロジェクト」と「モデル」という 2 つのリポジトリが必要になります。「プロジェクト」リポジトリには「プロジェクト X」のメイン ブランチが必要で、「モデル」リポジトリにはリビジョン 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「難しい方法」をはるかに簡単に、短くすることができます(モデル リポジトリで名前付きブランチの名前をデフォルトに変更しないことを前提としています)。

  1. 「プロジェクトX」リポジトリを(新しい)「プロジェクト」リポジトリに複製します。範囲0:80 改訂版hg clone -r 80 ProjectX Project(名前ではなく実際のパスを使用)
  2. クローン満杯「プロジェクトX」を「モデル」にhg clone -r 80 ProjectX Model
  3. histedit 拡張機能を有効にする (グローバルまたはモデルのみ)
  4. 変更セット 0 のハッシュをパラメータとして histedit を実行し、リビジョン 80 より前のすべての変更セットを「削除」します。

関連情報