Svnsync无法同步存储库

gri*_*yvp 2 svn svnsync

我有远程Subversion存储库的读访问权限,我想通过svnsync克隆它.同步开始正常并且进展顺利,但接近结束时我得到的错误如下:

Transmitting file data ...svnsync: File not found: transaction '12893-qyy', path
 '/project_name/trunk/path/to/file.cpp'
Run Code Online (Sandbox Code Playgroud)

我可以成功地查看有问题的修订版,以前的修订版和下一版.所有文件都已到位.我检查了有问题的文件的日志 - 它的文件夹被移动到以前版本的这个地方.

是否有任何方法可以强制svnsync忽略此错误并继续同步?我没有对存储库的管理员访问权限,所以我无法解决它.

更新:回答评论:我已经检查了与服务器使用(1.6.6),最新稳定版(1.6.17)和测试版(1.7)相同的subversion客户端.All给出完全相同的错误.此外,我可以成功检查'破损'存储库:最新版本,有问题的修订版(12893),之前的修订版(12892)和之后的修订版(12894)没有任何错误.

更新:回答更多的评论:SVN的日志显示,在修订12892文件夹"到"从移动/repo/other_project/trunk/source_path/repo/project_name/trunk/path

Mar*_*ard 7

鉴于您可以在此之前和之后检出修订,我猜您没有任何存储库损坏.svnsync通过"重放"事务来工作,而不是镜像数据或类似的东西.因此,可能存在阻止其重放事务的错误.我猜想有关该提交的事情已经触发了一个错误.您可以运行svn log -c 12893 -v来更详细地查看修订版.我猜它有一些东西就像一个导致问题的'R'eplace.您可以收集信息并将其发送到users@subversion.apache.org,以便对其进行分析并希望得到修复.

以下是其他一些想法:

  • 如何访问源存储库?file:// http:// etc.如果它是http://您可以尝试从使用默认的Neon HTTP库更改为Serf并查看它是否仍有问题.您可以通过在运行它时将-config-options = servers:global:http-library = serf添加到svnsync命令来实现.值得一试.

  • 看看你是否可以转储修订版.svnadmin dump -r12892:12893 --incremental reposname> dumpfile

  • 如果您可以转储修订,然后加载,您可以使用svnadmin load手动将其加载到目标存储库中.

  • 如果您可以加载修订版,那么您可以手动修复svnsync的属性,以便它知道它执行了该修订.svn ps --revprop -r0 svn:sync-last-merged-rev 123893 url:// to/mirror

更新:通过使用svnrdumpsubversion 1.7 RC2的新实用程序解决了这个问题.