gpt4 book ai didi

git - hg 转换中止 : '\n' and '\r' disallowed in filenames:

转载 作者:太空狗 更新时间:2023-10-29 14:43:55 25 4
gpt4 key购买 nike

我正要把我的 git 存储库转换成一个 hg 存储库。

问题是几个月前有一个名为 'favicons/Icon\r' 的文件被添加到 git 仓库中,这对 git 没问题。该文件已被删除,但由于它在历史记录中,所以我在运行 hg convert 扩展时得到了这个输出:

converting...
816 Favicons
transaction abort!
rollback completed
abort: '\n' and '\r' disallowed in filenames: 'favicons/Icon\r'!

有没有办法解决这个问题,还是我必须继续使用我的 git 存储库?非常感谢!

最佳答案

由于该路径名在 Mercurial 中无效,您必须执行以下一项或多项操作:

  • 使用跳过“错误”提交和/或文件的代码转换 Git 存储库
  • 用替换为“好”文件名的代码转换 Git 存储库
  • 将 Git 存储库复制到更改后的 Git 存储库,其中不显示文件名(删除或更改具有该文件的提交,就像前面两种方法一样,但在 Git 中执行,而不是在转换为 Mercurial 期间执行).

前两个可能很容易直接使用hg convert实现。例如,the documentation提到通过文件名排除或重命名文件的能力。不过,我自己并没有实际尝试过。

最后一个相对容易,因为您可以使用 git filter-branch 来实现它。 “相对容易”中的“相对”是非常相对的:filter-branch 不是特别容易正确使用(它只是比编写一个新的 Git-to-Mercurial 更容易转换器)。

参见 How to remove/delete a large file from commit history in Git repository?Completely remove file from all Git repository commit history举些例子。注意 Greg Bacon's answer正确使用 --tag-name-filter 来调整标签(如果您有指向历史记录的标签处于或超过复制期间提交被更改的点)。

关于git - hg 转换中止 : '\n' and '\r' disallowed in filenames:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39889203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com