我将hg-repository迁移到git-repository。 而且我有问题。你能帮我吗?
git存储库中文件名(和路径)的问题(以git扩展名)。 名称以西里尔字母(win 1251)为准。 你能建议我如何修复git存储库吗?
答案 0 :(得分:0)
Git本身在很大程度上与 1 无关。但是,如果您坚持使用UTF-8编码,那么Git会更有用[em> ,因为如果不另外指定,这是默认设置,并且UTF-8编码会避免使用数字陷阱(尽管不是全部)。与Git生态系统一起使用的大多数环境(工具集等)都喜欢UTF-8编码。
如果您确实指定了编码(通过将LANG
设置为例如ru_RU.CP1251
),某些工具将理解数据是在CP1251中编码的,但是他们也会认为您的终端正在使用CP1251,情况可能并非如此。要解决此问题,您可以使用luit,如对How do I view cp1251 text file in UTF-8 console?的回答所述。
Mercurial处理文件名编码的方法是described in the Mercurial Wiki。在快速导出/快速导入转换期间可以转换为UTF-8,但是有些棘手。是否要转换文件 content 也取决于您(导出/导入交换是执行此操作的理想时间,但是显然这需要仔细检测实际的内容编码)。
(事实上,在重建整个转换后的存储库时,您也可以使用git filter-branch
重新编码所有文件名,但是如果距离还很远,最好将Hg转换为Hg Git。)
1 也就是说,Git试图通过简单地存储快照来不解释文件名或文件内容本身。但这在很多边缘情况下都无法解决。