23

我有兴趣尝试分布式版本控制系统。git 听起来很有希望,但我在某个地方看到了一个关于 git 的 Windows 端口的注释,上面写着“不要使用非 ASCII 文件名”。我现在找不到,但是有这个链接。它现在让我离开了 git,但我不知道其他选项是否更好。

对我的日本公司来说,支持非 ASCII 文件名是必不可少的。我正在寻找一种在内部将文件名存储为 Unicode,而不是依赖于平台的编码,这种编码会导致无尽的悲伤。所以:

  1. 哪些 DVCS 支持 Unicode 文件名?
  2. 在 Windows 和 Linux 中?
  3. 理想情况下,可以在 Windows 和 Linux 机器之间传输存储库而问题最少?
4

7 回答 7

9

请参阅同一存储库中的问题 80。2009 年,在 Git 邮件列表(例如12)上进行了一次讨论,Git 维护者 Junio Hamano 就此提出了一些问题。我这里没有。通过以建设性的方式加入线程,您可能有助于解决问题。

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

于 2009-05-06T14:56:07.047 回答
8

混帐

2009 年 8 月:

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


2012 年 2 月更新

UTF-8 即将出现在 msysgit 中,提交类似“Update less settings for UTF-8”

从 Git for Windows Google+ 页面:

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


2012 年 4 月更新

它现在在 mSysGit 1.7.10 中发布。

请参阅Git for Windows Unicode Support页面。

于 2009-08-13T19:39:07.563 回答
8

水银

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

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

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

有一个外部创建的 Mercurial 扩展名为fixutf8 for Windows,它可以正确处理所有 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。我不确定这预计何时实施。

于 2009-05-09T12:08:17.997 回答
8

Bazaar VCS在内部使用 unicode 文件名。它对 Linux 和 Windows 上的 unicode 都有很好的支持。

于 2009-05-06T19:30:59.757 回答
2

Windows 1.7.10 上的 Git 现在使用 UTF-8 作为文件名,无论用户的语言环境如何。

于 2012-04-27T11:57:29.157 回答
0

这是一个非常棘手的问题。问题的出现是因为工具在不确定编码时试图解释文件名,或者因为它们翻译但翻译成不能处理所有情况的形式(例如 ASCII 或 UTF-16)。三个主要操作系统都没有就文件名的编码方式达成一致,这使事情变得更加困难。

为了更好地理解这些问题,我建议阅读 Mercurial 的编码策略页面。它描述了各种平台如何变化,以及 Mercurial 选择其策略的原因。

如果您真的需要这样做,那么最基本的事情是所有系统都需要设置为使用 UTF-8 文件名,而不是众多日文代码页之一。虽然说起来容易做起来难,但是一旦完成,系统就不需要将文件名翻译成其他任何东西。

没有翻译,没有问题。


*:是的,我知道您可以使用默认系统编码,但这与文件系统编码不同。当一个文件系统被多个系统访问或在系统之间物理移动时会发生什么?

于 2013-10-20T22:22:58.760 回答
0

根据这个页面:Bazaar、Codendi、CVSNT、Monotone、Perforce、Rational Team Concert、Subversion、Surround SCM、Synergy。但是该页面上有很多“未知数”。

于 2010-05-21T05:50:55.427 回答