2

我正在尝试使用hg convert --filemap. 转换适用于文件映射中的任何选项,除了rename. 如果我向文件映射添加任何rename选项,那么它在第一次与abort: unable to convert merge commit since target parents do not merge cleanly.

我尝试只在文件映射中放入一个虚拟 rename foo bar选项(存储库中实际上不存在 foo 或 bar 路径),我得到了相同的结果

我尝试输入一个真正的重命名(现有的第一个路径),同样的情况。只要任何重命名进入那里,它就会中断。

这是一个错误吗?我究竟做错了什么?

更新:重现:

创建文件a,在其中写一些东西,提交。更新到父级,在 中写入其他内容a,提交。与其他头部合并,手动修复冲突。

Filemap 由一行和仅一行组成:rename foo bar. 运行hg convert。如果提交不能自动合并,它将失败。

4

2 回答 2

0

我遇到了同样的错误,我通过将转换分成多个步骤来解决它。

问题似乎是当您在文件映射中组合重命名并在单次运行convert. 所以我这样做了:

  1. 第 1 步:hg convert使用没有重命名的文件映射运行。基本上只是将原始存储库中的内容包含/排除到临时中间存储库中。

  2. 第 2 步:hg convert使用仅重命名的文件映射再次运行。这将从中间存储库到最终存储库。尽管合并仍在历史中,但没有问题。

  3. 删除中间仓库

这解决了“中止”问题。另一个好处是,由于第 1 步是最长的(它从大约 20000 个变更集中只挑选了 100 个变更集),因此迭代重命名变得更加容易。我发现文件映射有点难以正确,因为事情会默默地失败。

我使用的是“Mercurial 分布式 SCM(5.7 版)”

于 2021-05-14T15:16:17.213 回答
0

根据扩展 wiki规则定义的文件映射无法重现错误:

原始回购

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]

文件映射

rename "file1.txt" "core.code"
rename "file1.dat" "data.dat"
于 2019-08-17T14:05:35.763 回答