Subversion COPY/MOVE - 文件未找到:交易“XXX-XX”

Ste*_*atz 6 nginx svn apache-2.2

我试图在我的一个 subversion 存储库中创建一个分支并不断遇到错误。无论做什么,我不断收到以下信息:

未找到文件:事务“3062-2e6”,路径“/Software/XXXXXX/branches/testbranch”

我注意到上面消息中“3063-3e6”的第一部分是存储库中最后一个成功提交的修订。我的 apache 日志没有提供更多信息:

[Wed Nov 24 14:10:38 2010] [error] [client x.x.x.x] Could not MOVE/COPY /svn/p070361/!svn/bc/3049/Software/SXXXXXX/trunk.  [404, #0]
[Wed Nov 24 14:10:38 2010] [error] [client x.x.x.x] Unable to make a filesystem copy.  [404, #160013]
[Wed Nov 24 14:10:38 2010] [error] [client x.x.x.x] File not found: transaction '3059-2e2', path '/Software/XXXXXX/branches/testbranch'  [404, #160013]
Run Code Online (Sandbox Code Playgroud)

这一切都发生在带有 nginx 前端的服务器上,该前端代理 Apache 以获取 subversion 位。其他存储库能够很好地分支,我能够使用 file:/// 从正在发生的服务器上的命令行创建分支。此存储库的权限与所有其他存储库相匹配,并且磁盘空间不是问题。

小智 9

可能您的 svn 结构没有“Software/XXXXXX/branches”目录,它必须存在才能在此处创建“testbranch”。你应该手工制作这个目录(“分支”),然后做一个分支。


小智 8

如果目标路径上的子目录尚不存在,则会出现此无用的错误消息。虽然您可以手动创建它们(使用svn mkdir),但使用该--parents选项更容易。

    svn cp ^/trunk/bigproject ^/branches/experimental/bigproject -m 'test branch'
Run Code Online (Sandbox Code Playgroud)

如果branchesexperimental不存在,则命令将失败。这应该有效:

    svn cp --parents ^/trunk/bigproject ^/branches/experimental/bigproject -m 'test branch'
Run Code Online (Sandbox Code Playgroud)


Alf*_*res -1

我知道这不是您问题的直接答案,但如果您想有效地使用分支,您应该考虑使用其他版本控制系统,如 git、mercurial 或 bazzar。

或者,如果您不想进行完全迁移,您可以使用 git-svn 作为 svn 存储库的“前端”,我建议您阅读本文以了解有关 git-svn 的更多信息。