有没有办法强制 SVN 不区分大小写?我们遇到了一个问题,用户从 linux 环境提交文件说“file.ext”和“File.ext”。工作得很好。然而,问题在于 MAC OSX 或 Windows 上的用户尝试更新/签出。这两个文件被认为是相同的,并且操作错误地失败。
有没有办法让SVN首先阻止提交“File.ext”和“file.ext”?
这个问题是相似的,但从 Windows 方面来看同样的问题,这不是这里的问题。
有没有办法强制 SVN 不区分大小写?我们遇到了一个问题,用户从 linux 环境提交文件说“file.ext”和“File.ext”。工作得很好。然而,问题在于 MAC OSX 或 Windows 上的用户尝试更新/签出。这两个文件被认为是相同的,并且操作错误地失败。
有没有办法让SVN首先阻止提交“File.ext”和“file.ext”?
这个问题是相似的,但从 Windows 方面来看同样的问题,这不是这里的问题。
您可以尝试一个预提交挂钩,例如这个(但是我自己没有尝试过)。
我假设已经排除了让您的用户注意它的可能性?我一直在 Linux 上工作,但通常认为文件名不区分大小写,即对我来说,无论操作系统如何想,它们都是相同的。
Subversion 1.7 现在似乎可以处理Windows 上的仅大小写重命名。
我会说你正在以错误的方式看待事物。这里最好的解决方案是将文件维护为区分大小写的方式。如果用户在 Linux 或 Solaris 中签出,项目将无法使用。
此外,考虑一些依赖于区分大小写的语言编译器,Java 编译器会抱怨文件名,我相信其他语言也会如此。
另一个问题是部署,如果您在 *NIX 系统上部署会怎样。那你就麻烦了!
我认为技术问题确实出在 Mac 和 Windows 方面,即它们的文件系统不区分大小写。至少在 mac 上,您可以将文件系统重新格式化为 HFS+ 并打开区分大小写。我不是 Windows 用户,但 Windows 的本机文件系统中可能有类似的选项(它仍然是 NTFS 吗?)。
如果您没有足够控制开发人员的环境以强制他们使用区分大小写的文件系统进行格式化,那么我认为您唯一的选择是一个预提交挂钩,用于检查重复(显然是不区分大小写的比较)文件名同一目录或修改您的项目以不使用同一目录中具有相同名称和不同大小写的文件。