我正在尝试查看包含所有分支和标记的完整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目录中并继续结帐。但它一直在其他分支上遇到这个问题。
有没有人知道为什么我不能将分支机构签出作为整个项目的一部分,但我可以单独查看它?
答案 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
答案 1 :(得分:6)
好的,所以我实际上找到了自己问题的答案,至少是解决方案。事实证明,它与路径的长度有关。在我上面的问题中,我编辑了路径名称,但没有发布公司代码的详细信息,但实际上它恰好是一个名字很长的文件,它存在于一个非常深的嵌套目录中。
当我自己检查分支时,我正在检查它到我的硬盘驱动器中的更高级目录,它正在工作。我尝试将分支直接签出到我为项目创建的branches目录中,但它也失败了,所以我想它一定与路径有关。
我现在将整个项目检查到D:\ ProjectDir,一切似乎都变得更加顺利。我想颠覆路径的长度是有限制的,所以它无法获得一些必需的文件。
*更新:限制为255个字符。事实证明,在我的情况下,路径是269个字符。因此,只需上升1个目录级别即可解决问题。
答案 2 :(得分:2)
检查一下:
find . -iname '.svn' -exec mkdir {}/tmp \;
答案 3 :(得分:0)
在检出以特殊Windows设备名称(如CON和PRN)为前缀的文件名时(例如CON.java),您也会收到此错误: