雖然可以使用hg rename
簡化mv
和hg addremove --similarity 100
步驟,但博客帖子是執行此操作的基本方式。
基本步驟:
- 建立新的版本。
- 強制拉出其中一箇舊版本庫。
- 更新到提示並將舊的存儲庫文件重命名爲新的位置。
- 提交
- 對其他存儲庫重複2-4。
- 將所有內容合併在一起。
實施例:
hg init rinjani
cd rinjani
hg pull -f <path_to>\rinjani-a
hg update tip
md rinjani-a
hg rename * rinjani-a
hg ci -m "renamed rinjani-a"
<repeat for other projects>
然後 「汞合併」 每個磁頭在一起。
當然,這是完全安全的,因爲所有的修改操作都只對新的存儲庫進行。如果你犯了一個錯誤,你總是可以重新開始!
這裏是一個非常簡單的圖形可能是什麼樣子準備三個不同版本庫後,使用上述方案進行合併:
@ 5:renamed rinjani-c files
|
o 4:rinjani-c file
o 3:renamed rinjani-b files
|
o 2:rinjani-b file
o 1:renamed rinjani-a files
|
o 0:rinjani-a file
然後合併頭(REV 1,3,5在這種情況下)。關鍵的一點是一起合併他們修改獨立歷史的頭前:
@ 7:Merge
|\
| o 6:Merge
| |\
| | o 5:renamed rinjani-c files
| | |
| | o 4:rinjani-c file
| |
| o 3:renamed rinjani-b files
| |
| o 2:rinjani-b file
|
o 1:renamed rinjani-a files
|
o 0:rinjani-a file
好吧,'md'是'mkdir'的別名,我想?例如,因爲'hg rename * rinjani-b',因爲其他回購重複步驟2-4,我會遇到一個問題,例如,將'rinjani-a'移動到'rinjani-b'內。另外,如果我最終每個回購有多個頭,我應該合併哪一個?小費? –
@GlennMohammad當您執行每個回購的'hg pull -f'時,它們將顯示爲不合並的獨立歷史記錄。直到最後才合併頭部。所以'hg rename * rinjani-b'不會看到'rinjani-a'文件。一旦所有的歷史被重新命名爲其最終位置,將每個歷史的頭部合併在一起,例如,將rinjani-b歷史合併到rinjani-a中,然後將rinjani-c合併到該結果中,等等。 –
'md'和'mkdir'是等效的...至少在我使用的Windows上。 –