检查Subversion存储库时出错(svn:您的.svn / tmp目录可能丢失或损坏;)

时间:2011-01-17 14:11:04

标签: svn version-control repository svn-checkout

我正在尝试查看包含所有分支和标记的完整subversion存储库:

svn co svn+ssh://path/to/project

这会运行一段时间,但在结帐时我会收到以下错误:

svn: Your .svn/tmp directory may be missing or corrupt; run 'svn cleanup' and try again
svn: Can't open file 'project\branches\BRANCH\source\java\com\bS\.svn\tmp\text-base\Event.java.svn-base': The system cannot find the path specified.

所以我尝试通过以下方式手动结帐:

svn co svn+ssh://path/to/project/branches/BRANCH

这会导致罚款,我得到分支机构。然后,我可以将分支复制到完整项目的branches目录中并继续结帐。但它一直在其他分支上遇到这个问题。

有没有人知道为什么我不能将分支机构签出作为整个项目的一部分,但我可以单独查看它?

4 个答案:

答案 0 :(得分:7)

通过在svn命令的参数中指定完全限定路径,可以在Windows上解决此问题。例如,而不是

c:\dev> svn co http://repoman.example/svn/myproj/trunk myproj

试试这个

c:\dev> svn co http://repoman.example/svn/myproj/trunk c:\dev\myproj

出于某种原因path length limits only apply to relative paths

答案 1 :(得分:6)

好的,所以我实际上找到了自己问题的答案,至少是解决方案。事实证明,它与路径的长度有关。在我上面的问题中,我编辑了路径名称,但没有发布公司代码的详细信息,但实际上它恰好是一个名字很长的文件,它存在于一个非常深的嵌套目录中。

当我自己检查分支时,我正在检查它到我的硬盘驱动器中的更高级目录,它正在工作。我尝试将分支直接签出到我为项目创建的branches目录中,但它也失败了,所以我想它一定与路径有关。

我现在将整个项目检查到D:\ ProjectDir,一切似乎都变得更加顺利。我想颠覆路径的长度是有限制的,所以它无法获得一些必需的文件。

*更新:限制为255个字符。事实证明,在我的情况下,路径是269个字符。因此,只需上升1个目录级别即可解决问题。

答案 2 :(得分:2)

检查一下: find . -iname '.svn' -exec mkdir {}/tmp \;

答案 3 :(得分:0)

在检出以特殊Windows设备名称(如CON和PRN)为前缀的文件名时(例如CON.java),您也会收到此错误:

http://mail-archives.apache.org/mod_mbox/subversion-users/201209.mbox/%3C4C6D8718-51F0-4DC7-9E74-E8161EC686AC@ryandesign.com%3E