如何使用 HG 命令拆分 mercurial 存储库上的分支来创建其他存储库?

如何使用 HG 命令拆分 mercurial 存储库上的分支来创建其他存储库?

例如,我的 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
|   
[...]

现在我想要两个存储库,“项目”和“模型”。 “项目”存储库必须具有“项目 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. 运行 histedit,使用变更集 0 的哈希值作为参数,并“删除”修订版 80 之前的所有变更集

相关内容