【问题标题】:Unable to check out using TortoiseSVN - "File already exists" error for two files in repository无法使用 TortoiseSVN 签出 - 存储库中两个文件的“文件已存在”错误
【发布时间】:2014-03-31 18:12:34
【问题描述】:

当我尝试检查大型存储库的头版本时,它在两个特定文件上失败:

Error | Failed to run the WC DB work queue associated with
Error | 'C:\Work\gpss_src\cpp\apps\RTRover\lib', work item 6625 (file-install
Error | cpp/apps/RTRover/lib/prn.h 1 0 1 1)
Error | Can't move 'C:\Work\gpss_src\.svn\tmp\svn-F3F9679B' to
Error | 'C:\Work\gpss_src\cpp\apps\RTRover\lib\prn.h': Cannot create a file when that
Error | file already exists.

我发现发布了类似的问题,但不是这个确切的问题。大小写没有问题——不管大小写,整个存储库中实际上只有一个 prn.h 文件。如果我使用 svn move 重命名 prn.h,我会收到与 prn.cpp 相同的错误。

到目前为止,我发现的唯一解决方案是使用svn move 重命名 prn.h 和 prn.cpp,但我宁愿不重命名文件。我也尝试重命名原始文件并添加一个空的 prn.h,但这也会导致此错误。如果我重命名原始文件并且不创建虚拟 prn.h 或 prn.cpp,则所有内容都将结帐而不会出现任何错误。我在 Linux 环境中检查源代码也没有任何问题。

我的猜测是存储库的 SVN 数据库有问题,或者版本不兼容。 SVN 服务器使用的是 1.6.11 版本。客户端使用的是TortoiseSVN 1.8.5,它与 SVN 版本 1.8.8 链接。

【问题讨论】:

    标签: svn tortoisesvn


    【解决方案1】:

    您不能在 Windows 上拥有名为 prn.* 的文件。 Windows 上有某些保留名称

    • PRN
    • CON
    • AUX
    • NUL
    • LPT1/2/3/4
    • CLOCK$

    具有这些名称的文件,无论后缀如何,都无法在 Windows 系统上创建。您通常会遇到一些奇怪的错误,例如参数数量错误只读文件文件已存在

    你可以这样做来证明:

    C:> notepad test.txt
    C:> move test.txt prn.txt
    The parameter is incorrect.
    

    很遗憾,除了使用其他操作系统之外,没有其他解决方案。在这种情况下,即使 Cygwin 也救不了你。

    【讨论】:

    • 太好了,谢谢!看起来它可以与 cygwin 应用程序一起使用,但不适用于本机 Win32 应用程序(自 cygwin 版本 1.70 起):cygwin.com/cygwin-ug-net/using-specialnames.html 但我会重命名这些文件以免将来遇到麻烦。
    • 很高兴知道 Cygwin 现在解决了这些问题。我很惊讶自 2009 年左右发布 1.7 以来我不知道这一点。
    猜你喜欢
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多