![](/img/trans.png)
[英]Mercurial convert with filemap to separate subfolders creates empty repository
[英]Mercurial convert with --filemap fails with any dummy rename
我正在嘗試使用hg convert --filemap
清理存儲庫。 Convert 適用於文件映射中的任何選項,但rename
除外。 如果我向 filemap 添加任何rename
選項,那么它在第一次與abort: unable to convert merge commit since target parents do not merge cleanly
合並時失敗abort: unable to convert merge commit since target parents do not merge cleanly
。
我嘗試只在 filemap 中放入一個虛擬的rename foo bar
選項(repo 中實際上不存在 foo 或 bar 路徑) ,但得到了相同的結果。
我嘗試進行真正的重命名(現有的第一條路徑),也會發生同樣的情況。 只要有任何重命名,它就會中斷。
這是一個錯誤嗎? 我究竟做錯了什么?
更新:重現:
創建文件a
,在其中寫一些東西,提交。 更新到父級,在a
寫入其他內容,提交。 與其他頭部合並,手動修復沖突。
Filemap 由一行和一行組成: rename foo bar
。 運行hg convert
。 如果提交不能自動合並,它將失敗。
無法根據擴展維基規則定義的文件映射重現錯誤:
原始回購
Repo>hg log --style changelog
2019-08-17 Me
* file1.dat, file1.txt:
Merge all from Data1
[21caf63b7011] [tip] <Data2>
* file1.dat:
Compability fix
[77667c9ad22c] <Data2>
* file1.dat, file1.txt:
Mod for Data2
[7253bf25d7e7] <Data2>
* file1.dat, file1.txt:
Mod for Data1
[de1f80454b7b] <Data1>
* file1.dat, file1.txt:
Mod1
[7f1dd9e27ceb]
* file1.dat, file1.txt:
Initial tree
[d10d46c86e0f]
轉換后的回購
Conv>hg log --style changelog
2019-08-17 Me
* core.code, data.dat:
Merge all from Data1
[350d1675a713] [tip] <Data2>
* data.dat:
Compability fix
[7b13e52e0887] <Data2>
* core.code, data.dat:
Mod for Data2
[05f2eae8379c] <Data2>
* core.code, data.dat:
Mod for Data1
[6776b7ac4388] <Data1>
* core.code, data.dat:
Mod1
[c733197f909c]
* core.code, data.dat:
Initial tree
[19230ad05c7a]
Filemap
rename "file1.txt" "core.code"
rename "file1.dat" "data.dat"
我遇到了同樣的錯誤,我通過將轉換分成多個步驟來解決它。
問題似乎是當您在單次運行convert
期間在文件映射中組合重命名並在包含的歷史記錄中合並時。 所以我這樣做了:
步驟 1:使用沒有重命名的文件映射運行hg convert
。 基本上只是將原始存儲庫中的內容包含/排除到臨時中間存儲庫中。
第 2 步:使用僅重命名的文件映射再次運行hg convert
。 這將從中間存儲庫到最終存儲庫。 即使合並仍在歷史中,也沒有問題。
刪除中間倉庫
這解決了“中止”問題。 還有一個次要的好處是,由於第 1 步是最長的(它只從大約 20000 個變更集中挑選了 100 個變更集),因此更容易迭代重命名。 我發現文件映射有點難以正確處理,因為事情只會默默地失敗。
我使用的是“Mercurial Distributed SCM(版本 5.7)”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.