簡體   English   中英

使用 --filemap 進行 Mercurial 轉換失敗並出現任何虛擬重命名

[英]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. 步驟 1:使用沒有重命名的文件映射運行hg convert 基本上只是將原始存儲庫中的內容包含/排除到臨時中間存儲庫中。

  2. 第 2 步:使用僅重命名的文件映射再次運行hg convert 這將從中間存儲庫到最終存儲庫。 即使合並仍在歷史中,也沒有問題。

  3. 刪除中間倉庫

這解決了“中止”問題。 還有一個次要的好處是,由於第 1 步是最長的(它只從大約 20000 個變更集中挑選了 100 個變更集),因此更容易迭代重命名。 我發現文件映射有點難以正確處理,因為事情只會默默地失敗。

我使用的是“Mercurial Distributed SCM(版本 5.7)”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM