如何使用 HG 指令拆分 Mercurial 儲存庫上的分支以建立其他儲存庫?

如何使用 HG 指令拆分 Mercurial 儲存庫上的分支以建立其他儲存庫?

例如,我的 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(即從 rev. 80 到 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

我怎樣才能使用 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. 將「Project X」儲存庫複製到(新)「Project」儲存庫,範圍0:80 修訂hg clone -r 80 ProjectX Project(使用真實路徑而不是名稱)
  2. 複製滿的“X計劃”進入“模型”hg clone -r 80 ProjectX Model
  3. 啟用 histedit 擴充(全域或僅在模型中)
  4. 使用變更集 0 的雜湊值作為參數運行 histedit,並「刪除」rev 80 之前的所有變更集

相關內容