8

我正在尝试检查一个完整的颠覆存储库,包括所有分支和标签:

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

这很好,我得到了分支。然后我可以将分支复制到完整项目的分支目录中并继续结帐。但它在其他分支上不断遇到这个问题。

有谁知道为什么我不能将分支作为整个项目的一部分签出,但我可以自己签出?

4

4 回答 4

7

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

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

尝试这个

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

由于某种原因,路径长度限制仅适用于相对路径

于 2011-08-05T13:57:34.297 回答
6

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

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

我现在将整个项目检出到 D:\ProjectDir 中,一切似乎都顺利得多。我猜对路径长度的颠覆是有限制的,因此它无法获取一些必需的文件。

*更新:限制为 255 个字符。事实证明,在我的例子中,路径是 269 个字符。因此,只需提升 1 个目录级别就足以解决问题。

于 2011-01-17T14:30:39.637 回答
2

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

于 2013-10-23T14:10:16.387 回答
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

于 2013-04-12T09:12:44.180 回答