我对远程Subversion存储库有读访问权限,我想通过svnsync克隆它。同步开始正常,进展良好,但在接近尾声时,我得到的错误信息如下:
Transmitting file data ...svnsync: File not found: transaction '12893-qyy', path
'/project_name/trunk/path/to/file.cpp'我可以成功地检查出有问题的版本,前一个版本和下一个版本。所有文件都已就位。我已经检查了有问题的文件的日志-它的文件夹在以前的版本中被移到了这个地方。
是否可以强制svnsync忽略此错误并继续同步?我没有存储库的管理员访问权限,所以我无法修复它。
更新:回复评论:我已经检查了与服务器使用相同的subversion客户端(1.6.6),最新稳定版(1.6.17)和测试版(1.7)。所有这些都会产生完全相同的错误。而且,我可以成功地检出“损坏”的存储库:最新版本,有问题的版本(12893),之前的版本(12892)和之后的版本(12894),没有任何错误。
更新:回复更多评论: svn日志显示,在12892版本中,文件夹'to‘已从/repo/other_project/trunk/source_path移至/repo/project_name/trunk/path
发布于 2011-09-14 04:25:57
鉴于您可以在此之前和之后签出修订,我猜您没有任何存储库损坏。svnsync的工作原理是“重放”事务,而不是镜像数据或类似的东西。因此,可能存在阻止它重放事务的错误。我猜想这个提交一定是触发了一个bug。您可以运行svn log -c 12893 -v来查看更详细的修订。我猜它里面有像‘R’‘eplace这样的东西导致了问题,你可以收集信息并将其发送到users@subversion.apache.org,这样它就可以被分析并有望修复。
这里有一些其他的想法:
更新:通过使用subversion 1.7 RC2中的新svnrdump实用程序解决了此问题。
发布于 2019-10-18 08:51:45
为了补充上面的响应,修复我的问题的最后一种方法是使用svndumpfilter命令排除损坏的节点。
每次我尝试在使用svnrdump之后加载特定的版本时,我都会得到以下错误;
..。svnadmin: E160004:文件系统已损坏svnadmin: E200014:读取时校验和不匹配表示形式:预期: 77ec72e82afddd1cb8d2c63760cf4dbb实际: f34fb5883dffffec3cd59a69f8a2cb99
如果您已将修订的转储创建为rev12892.dmp,则可以排除路径,例如。"/project_name/trunk/path“如下;
svndumpfilter排除/项目名/主干/路径< rev12892.dmp > pruned_dump_file
有关svndumpfilter命令的详细信息,请参阅svn红皮书:http://svnbook.red-bean.com/en/1.7/svn.ref.svndumpfilter.commands.c.exclude.html
https://stackoverflow.com/questions/7332330
复制相似问题