什么DVCS支持Unicode文件名?

Cra*_*een 23 git unicode mercurial dvcs bazaar

我有兴趣尝试分布式版本控制系统.git听起来很有希望,但我在git的Windows端口看到了一条说"不要使用非ASCII文件名"的注释.我现在找不到,但有这个链接.它现在让我脱离git,但我不知道其他选项是否更好.

支持非ASCII文件名对我的日本公司至关重要.我正在寻找一个内部存储文件名为Unicode的文件,而不是依赖于平台的编码,这会导致无休止的悲伤.所以:

  1. 什么DVCS支持Unicode文件名?
  2. 在Windows和Linux中?
  3. 理想情况下,有可能在Windows和Linux机器之间以最小的问题传输存储库吗?

rob*_*inr 9

请参阅同一存储库中的问题80.2009年,又出现了Git的邮件列表上的讨论(如1,2),其中Git的维护者朱尼奥·哈默诺问这方面的一些问题.我没有在这里.通过以建设性的方式加入线程,您可以帮助解决问题.

在Java实现JGit中,我们在创建文本元数据和文件名时总是使用UTF-8.这是唯一的方法,但有一些事情需要考虑.


bia*_*lix 8

Bazaar VCS在内部使用unicode文件名.它在Linux和Windows上都非常支持unicode.

  • 我在Windows上做了一些Bazaar的基本测试,并确认它可以添加和合并文件,即使它们在当前系统代码页之外有文件名字符.好东西.我稍后会在Linux机器上尝试存储库,看看它是否可以正确分支. (2认同)

Cra*_*een 8

水银

在Linux上,我认为Mercurial只是编码系统的编码(如果我错了,请纠正我).因此,最好将Linux设置为UTF-8以实现跨平台兼容性.这是许多现代发行版的默认设置.

在Windows上,Mercurial(由于Python的字节串处理)使用系统代码页.这只是为了保证非ASCII字符的跨平台互操作性.

适用于Windows的fixutf8扩展(在Mercurial 2.0之前)

有一个名为fixutf8 for Windows 的外部创建的Mercurial扩展,它可以正确处理所有Unicode字符(甚至是当前代码页之外的字符),并在Mercurial存储库中将文件名编码为UTF-8.因此,只要Linux使用UTF-8编码,就可以实现与Linux的互操作.我上周尝试在我的Windows设置上启用它,并且在安装时遇到了一些问题.从那以后,一个问题得到解决.现在唯一的问题是二进制Mercurial发行版是用Python 2.4构建的,而fixutf8要求使用Python 2.5或更高版本构建Mercurial来加载fixutf8.我希望这将在不久的将来得到解决.

适用于Windows的Mercurial 2.0及更高版本

根据fixutf8网页,fixutf8似乎与Mercurial 2.0及更高版本不兼容.有关未来解决方案的详细信息,请参阅WindowsUTF8Plan.我不确定何时会实现这一点.

  • 我维护fixutf8扩展并每天使用它与二进制版本的HG.提交一个错误http://bitbucket.org/stefanrusek/hg-fixutf8/,我很乐意看看. (4认同)
  • -1因为这不再有效.截至2012年12月,Mercurial不支持支持Unicode的DVCS,它可能会在未来几年内得到不良支持,因为由于某些奇怪的原因,他们决定将文件名视为"二进制blob",而不是"text"(对于记录,这是因为Unix还将文件名视为二进制blob而不是文本). (4认同)

小智 8

混帐

2009年8月:

msysgit项目正在忙于修复Windows上对Git的UTF-8支持.它可能会在下一个版本中修复.


2012年2月更新

UTF-8即将推出msysgit,像这样的提交"更新UTF-8的设置"

从Git for Windows Google+页面:

Karsten Blees用于Windows的Git的UTF-8补丁现已合并为' devel'.
这意味着即将发布的版本将支持Unicode文件名!


2012年4月更新

它现在在mSysGit 1.7.10中发布.

请参阅Git for Windows Unicode支持页面.

  • 直到知道(9/2010)它没有修复! (3认同)
  • 从msysgit 1.7.6开始,它仍然没有固定.:( (3认同)
  • 我正在使用Git-1.7.10-preview20120409.exe,现在可以正确识别unicode文件名. (2认同)