【问题标题】:Subversion, renaming, Wha?颠覆,重命名,什么?
【发布时间】:2011-05-25 01:47:24
【问题描述】:

所以我有一个有趣的问题。

Subversion,如果唯一的区别是大写,则不允许重命名具有相同名称的项目。 Netbeans 有颠覆性。如果大小写发生变化,Netbeans 允许您重命名文件。

我在颠覆中将一个名为 eventCreator.php 的东西重命名为 EventCreator.php 并上传(它是一个类)。 Netbeans 一切顺利。事实上,我又做了大约 10 次提交。我试图在另一台计算机上下载它,这是发生的错误
"无法打开文件
C:\xampp\htdocs\MyProject\scripts.svn\tmp\text-base\eventCreator.php.svn-base':
系统找不到指定的文件。"

我的存储库位于 DreamHost。所以我去了dreamhost,我可以进入脚本文件夹并在存储库中看到eventCreator.php和EventCreator.php,但我无法使用netbeans或tortoiseSVN下载它。
有什么帮助吗?

【问题讨论】:

  • ment commits 不会更新“10 more commits/updates”的行

标签: svn tortoisesvn rename file-rename


【解决方案1】:

删除不需要的文件

svn del http://domain/path/to/eventCreator.php

或者你甚至可以打开 repo browser(从 subversion 上下文菜单)并删除那里的文件,而无需使用无聊的控制台命令 ;-)

【讨论】:

    【解决方案2】:

    Subversion 区分大小写。如果你告诉它存储 20 个不同大小写组合的文件,它会存储它。现在,当您从存储库中签出这些文件时,您所在的平台可能会警告您,拒绝签出(就像您的情况一样),或者只是覆盖用第二个文件写入的第一个文件的内容,第三,你明白了。

    为了解决这个问题,zerkms 的回答是正确的。使用 repo 浏览器或直接与服务器上的存储库一起使用的某些工具(如果需要,命令行)删除您不想要的文件的再现。

    为避免这种情况再次发生,请在您的预提交挂钩脚本中使用来自 Subversion 项目的case-insensitive.py script。当提交添加文件时,它将检查存储库中是否已有文件,但情况不同。如果有,它将允许您拒绝提交,直到它解决为止。

    由于您有第三方托管您的 Subversion 存储库,如果您无法使用他们的管理工具,请联系他们以应用此挂钩。

    【讨论】:

    • 你的意思是颠覆区分大小写的。
    • @JeremyP:不,Subversion 在文件名和目录名方面不区分大小写。就像 Windows 一样,它不关心是否有 20 个同名的文件,只要它们没有相同的大小写即可。
    • 没有。那是错的。在 subversion 中,foo.cFoo.c 指的是两个不同的对象。这称为区分大小写。即意思是对大小写敏感。在 Windows NTFS 文件系统中,foo.cFoo.c 指的是同一个对象。这称为不区分大小写
    • @JeremyP:我的立场是正确的。你是对的:en.wiktionary.org/wiki/case_sensitiveen.wiktionary.org/wiki/case_insensitive。我已经编辑了我的答案以符合您的 cmets。
    • 我投了赞成票,因为除了那个问题之外,这是一个很好的答案。
    【解决方案3】:

    Subversion 1.7 现在似乎可以在 Windows 上处理 case only renames

    【讨论】:

    • 1.7 已经发布了吗?哇。我希望netbeans至少可以更新到1.6
    【解决方案4】:

    另一种方法是简单地将项目复制(右键单击项目上的复制)到新名称。这将删除 .svn 目录的所有痕迹,您可以重新提交它。但是,您也会失去指向之前在 SVN 中完成和提交的所有编辑的链接。

    【讨论】:

      【解决方案5】:

      问题不在于 Subversion,而在于 Windows(不,Mac 也有同样的问题,所以不要开始在这个问题上感到优越——粉丝。)

      在 Windows 中,会保留大小写,但在文件名中并不重要。在 Windows 中,这些都是同一个文件:

      • myfile.txt
      • MYfile.TXT
      • MYFILE.TXT
      • MyFile.TxT

      不幸的是,Unix(Mac 除外)既保留大小写,又很重要。对于 Unix,所有这些文件都是不同的文件。

      当您将 Subversion 存储库存储在 Linux/Unix 主机上,但使用的是 Windows/Mac 客户端时,就会出现欢闹。 Unix Subversion 存储库将每个大小写变体作为不同的文件进行跟踪,但您 PC 上的 subversion 客户端认为它们都是相同的。有两种解决方案:

      • 使用 Linux 计算机进行结帐、解决问题并重新签入。
      • 使用svn delete http://.... URL 语法删除其中一个恶意副本,因此只有一个具有该名称的文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-01
        • 2013-02-23
        • 2011-04-25
        • 2011-01-14
        • 1970-01-01
        • 1970-01-01
        • 2014-11-11
        相关资源
        最近更新 更多