从SVN转换到Mercurial(Windows)时如何保留文件名中的特殊字符?

3
我将使用hg convert来将一个SVN仓库转换为Mercurial。但是文件名中的特殊字符如æ、ø和å(丹麦语)会被转换成æ、ø和Ã¥。
我使用的确切命令是:
hg convert http://svn.server/path/to/repo repo-hg

我正在使用TortoiseHg 2.1.4和Mercurial 1.9.3在Windows 7上。

如何保留原始的特殊字符?

2个回答

2

这些混乱的字符被误译为UTF-8(可能是)Windows-1252。正如@LazyBadger所说,全局选项--encoding utf8也许可以帮助解决问题。你能否指向一个公共的丹麦服务器以尝试克隆?


我已经为您准备了带有元音字母的文件名和内容,链接在此:http://mayorat.ursinecorner.ru:8088/svn/Hello/trunk/。祝你好运! - Lazy Badger
2
@LazyBadger:我可以通过在控制台执行set HGENCODING=utf8,然后启动thg来正确显示文件。GUI将正确显示丹麦文件的文件、注释和内容,但添加新文件会出现问题。似乎它们仍然以cp1252编码并存储。接下来,我使用“hg manifest”查找所有“特殊”文件,并创建一个文件映射用于hg-to-hg转换(hg convert --filemap <filemap> <hg-old> <hg-new>)。我给出了正确的文件名,并最终得到了可用的数据库。 - Mark Tolonen
Mark,Mercurial 不会以字符集相关的方式转换任何数据,因此 - 如果您想添加丹麦文件名,则必须在(我的语言环境不是1252,但我可以添加文件之前)具有丹麦兼容的环境。HGENCODING 只影响 Mercurial,您的系统(控制台或 GUI)使用另一种字符集。而且,顺便说一下,将您的评论拆分并将其添加到 Jacob 的答案中(我可以为此投票)。在被愚蠢的白痴给我的 正确 答案投反对票后,我对这个话题和问题不再感兴趣。 - Lazy Badger
创建一个文件映射是对我有效的解决方案。感谢马克。 - JacobE

0

你缺少全局选项--encoding ENCODING,其中编码必须是文件名的字符集(即在某些chcp XXX之后,您可以在svn ls中读取文件名,在经过精细转换后,您将能够正确地读取文件名)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接