4

我正在开发一个 Macbook 系统,它被格式化为不区分大小写的系统。问题是,我需要检查一个 SVN 分支,其中包含一些区分大小写的文件。例子:

inbuilt-file.c
InBuilt-File.c

当两个文件都在同一个文件夹中时,如何签出此分支?当我尝试结帐时,它给了我一个错误,指出该名称的未版本化文件已经存在。

4

3 回答 3

10

立即想到的方法是:

  1. 停止使用区分大小写的文件名。确实没有理由让 Foo.c 和 foo.c 成为不同的东西。

  2. 停止使用不区分大小写的文件系统。您可以在 Mac OS X 上将 HFS+ 卷格式化为不区分大小写,尽管 Adob​​e Creative Suite 和魔兽世界会对此抱怨。

  3. 将其检查到使用区分大小写的 HFS+ 格式化的 DMG 文件中。在磁盘工具中或使用如下命令创建它:hdiutil create -size 100m -fs "Case-sensitive HFS+" -volname CaseSensitive CaseSensitive.dmg

  4. 一个有点笨拙的想法:使用 git svn并编写一些钩子,这些钩子会自动将区分大小写的文件名转换为修改后的文件名,该文件名在您签出时遵循特定标准,然后再次签入具有正确的文件名。当然,这会破坏您的构建脚本和依赖项等,因为该文件仍然没有正确的名称。所以你需要启动一个分支,这让你不得不使用 git svn 之类的东西。与(1)相比,这似乎是不必要的痛苦。

于 2010-06-07T02:46:34.427 回答
3

我最近遇到了同样的问题(运行 Windows),但无法弄清楚。

对于 Mac 用户,有人写了说明:

  1. 使用 Apple 的 Disk Utility 应用程序创建 Mac OS Extended 类型的新稀疏磁盘映像(区分大小写,日志式)
  2. 挂载新的磁盘映像
  3. 查看此图片的宠物来源
于 2010-06-07T02:43:17.617 回答
1

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
于 2010-06-07T02:45:50.787 回答