【问题标题】:How to checkout a case sensitive SVN source code branch to a case insensitive system?如何将区分大小写的 SVN 源代码分支签出到不区分大小写的系统?
【发布时间】:2010-06-07 02:31:27
【问题描述】:

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

inbuilt-file.c
InBuilt-File.c

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

【问题讨论】:

  • 建议使用 Vagrant / Virtual Box 并运行 Linux 虚拟机

标签: svn case-sensitive case-insensitive


【解决方案1】:

立即想到的方法是:

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

【讨论】:

  • 第一点只对不区分大小写的语言有效。 Foo.c 和 foo.c 可能没有什么不同,但 Foo.java 和 foo.java 是。
  • 前两个答案的一部分,不是答案(人们并不总是能控制这些条件),解决方案 3 非常聪明。
【解决方案2】:

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

对于 Mac 用户,虽然有人有书面说明:

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

【讨论】:

    【解决方案3】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2016-11-24
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 2020-02-18
      相关资源
      最近更新 更多