【发布时间】:2018-04-30 23:40:24
【问题描述】:
有没有办法让 Mercurial 将 foo.txt 和 Foo.txt 视为不同?
因此,如果我将 foo.txt 重命名为 Foo.txt,它会看到此更改并允许将其提交到存储库?
目前,如果我重命名文件,Mercurial 看不到任何更改,也无法提交更改(除了变通方法,例如先重命名为 foo_.txt)。
背景是 - 我有一堆 XML 文件,这些文件被处理以生成代码并将其编译为 DLL。文件名和大小写很重要,因为它们成为目标代码中的类名。
附加问题:如果这不可能,在 Git 上会有什么不同吗?
【问题讨论】:
-
默认情况下,Windows 上的 Git 也不会发现此更改,如果您将 core.ignorecase 配置为 false,那么当您在不使用
git mv的情况下重命名文件时,它会变得非常混乱。基本上它会看到一个新文件,因为 git 不知道 Test.txt 但 test.txt 是,它看到旧文件是因为 Windows 说 test.txt 存在并且具有与存储库中相同的元数据。基本上,如果您重命名文件更改大小写,然后添加并提交它,存储库现在包含 2 个不同大小写的文件,但磁盘上只有一个文件。 -
您能否尝试让 mercurial 为您重命名文件,而不是发现您使用 Windows 对其进行了重命名?看看这有什么不同?
-
@LasseVågsætherKarlsen 是的,它确实有所作为,它以这种方式正确运行,就像正常重命名一样。我还测试了 repo 的另一个克隆将在更新到此版本时将文件物理重命名。这部分是好消息。但对我们来说仍然是个问题,因为这些 XML 文件来自不同的开发组,我们只需要将它们放在以前的版本之上,让 Mercurial 发现这些变化。所以似乎发现更改失败了 - 有没有办法重新配置它?我使用 TortoiseHg - 这可能是 Tortoise 的问题吗?
-
由于 Windows 不区分大小写,因此使用文件名大小写的设计决定听起来不是一个好的决定。而是将类名放在 XML 数据中。
-
感谢 cmets 伙计们。但我对此很不高兴:/