我即将将我的git repo转换为hg repo。问题是几个月前有一个名为' favicons / Icon \ r'到git repo,这对git来说很好。该文件已被删除,但由于它在历史记录中,因此在运行hg convert extension时会得到此输出:
converting...
816 Favicons
transaction abort!
rollback completed
abort: '\n' and '\r' disallowed in filenames: 'favicons/Icon\r'!
有没有办法解决这个问题,还是我必须继续使用我的git repo?非常感谢!
答案 0 :(得分:2)
由于该路径名在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
来调整标记(如果您在复制期间更改提交的位置或之外指向了历史记录,则必须使用此标记。)
答案 1 :(得分:1)
我这样解决了:
echo "exclude \"favicons/Icon"$'\r'$"\"" >> omit
hg convert --filemap omit mygitrepo myhgrepo