我正在开发一个 Macbook 系统,它被格式化为不区分大小写的系统。问题是,我需要检查一个 SVN 分支,其中包含一些区分大小写的文件。例子:
inbuilt-file.c
InBuilt-File.c
当两个文件都在同一个文件夹中时,如何签出此分支?当我尝试结帐时,它给了我一个错误,指出该名称的未版本化文件已经存在。
我正在开发一个 Macbook 系统,它被格式化为不区分大小写的系统。问题是,我需要检查一个 SVN 分支,其中包含一些区分大小写的文件。例子:
inbuilt-file.c
InBuilt-File.c
当两个文件都在同一个文件夹中时,如何签出此分支?当我尝试结帐时,它给了我一个错误,指出该名称的未版本化文件已经存在。
立即想到的方法是:
停止使用区分大小写的文件名。确实没有理由让 Foo.c 和 foo.c 成为不同的东西。
停止使用不区分大小写的文件系统。您可以在 Mac OS X 上将 HFS+ 卷格式化为不区分大小写,尽管 Adobe Creative Suite 和魔兽世界会对此抱怨。
将其检查到使用区分大小写的 HFS+ 格式化的 DMG 文件中。在磁盘工具中或使用如下命令创建它:hdiutil create -size 100m -fs "Case-sensitive HFS+" -volname CaseSensitive CaseSensitive.dmg
一个有点笨拙的想法:使用 git svn并编写一些钩子,这些钩子会自动将区分大小写的文件名转换为修改后的文件名,该文件名在您签出时遵循特定标准,然后再次签入具有正确的文件名。当然,这会破坏您的构建脚本和依赖项等,因为该文件仍然没有正确的名称。所以你需要启动一个分支,这让你不得不使用 git svn 之类的东西。与(1)相比,这似乎是不必要的痛苦。
我最近遇到了同样的问题(运行 Windows),但无法弄清楚。
对于 Mac 用户,有人写了说明:
Lauri Lehtinen 的回答看起来不错。但是,如果您需要在不区分大小写的系统中使用文件,则无论如何都必须重命名它们。svn move
您可以在使用命令检出它们之前在存储库中重命名它们。
$ svn help rename
move (mv, rename, ren): Move and/or rename something in working copy or repository.
usage: move SRC... DST