Git 我可以使NTFS上的文件名区分大小写吗?

Git 我可以使NTFS上的文件名区分大小写吗?,git,mercurial,Git,Mercurial,有没有办法让Mercurial将foo.txt和foo.txt区别对待? 所以,如果我将foo.txt重命名为foo.txt,它将看到此更改,并且可以将其提交到存储库 目前,如果我重命名一个文件,Mercurial看不到任何更改,也没有办法提交更改(除了解决办法,比如先重命名为foo_uu2;.txtfirst) 背景是-我有一堆XML文件,这些文件经过处理生成代码并编译成DLL。文件名和大小写很重要,因为它们成为目标代码中的类名 附加问题:如果这不可能,Git上会有什么不同吗?我没有对Mer

有没有办法让Mercurial将
foo.txt
foo.txt
区别对待? 所以,如果我将
foo.txt
重命名为
foo.txt
,它将看到此更改,并且可以将其提交到存储库

目前,如果我重命名一个文件,Mercurial看不到任何更改,也没有办法提交更改(除了解决办法,比如先重命名为
foo_uu2;.txt
first)

背景是-我有一堆XML文件,这些文件经过处理生成代码并编译成DLL。文件名和大小写很重要,因为它们成为目标代码中的类名



附加问题:如果这不可能,Git上会有什么不同吗?

我没有对Mercurial进行测试,但有一些机制可以让Windows在某些上下文中操作NTFS文件系统,使其区分大小写

总结:

您可以将
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\dword:obcasemensitive
注册表值设置为
0


默认情况下,Windows上的Git也不会发现此更改,如果您将core.ignorecase配置为false,则当您重命名文件而不使用
Git mv
时,它会超链接。基本上,它会看到一个新文件,因为Test.txt对git来说是未知的,但Test.txt是未知的;它会看到旧文件,因为Windows说Test.txt存在,并且与存储库中的元数据相同。基本上,如果您重命名文件更改案例,然后添加并提交它,存储库现在包含两个不同大小写的文件,但磁盘上只有一个文件。您是否可以尝试要求mercurial为您重命名该文件,而不是发现您使用Windows重命名该文件?看看这是否有区别?@LasseVågsætherKarlsen是的,它确实有区别,它的行为正确,与普通重命名完全相同。我还测试了当更新到此版本时,repo的另一个克隆将物理重命名该文件。这部分是好消息。但对我们来说仍然是一个问题,因为这些XML文件来自不同的开发组,我们只需要将它们放在以前版本的基础上,让Mercurial找到这些更改。因此,发现变化似乎失败了——有没有办法重新配置它?我使用的是TortoiseHg——这可能是Tortoise的问题吗?因为Windows是不区分大小写的,所以听起来使用文件名大小写的设计决定不是一个好的决定。相反,将类名放在XML数据中。谢谢大家的评论。但我对此很不高兴:/