I have a read access to remote Subversion repository and i want to clone it via svnsync. The synchronization starts ok and progress well, but near the end i get error that looks like:
Transmitting file data ...svnsync: File not found: transaction '12893-qyy', path
'/project_name/trunk/path/to/file.cpp'
I can sucessfully check out the revision in question, previous revision and next revision. All files are in place. I have checked log for file in question - it's folder is moved into this place in previous revision.
Is it any way i can force svnsync to ignore this error and continue sync? I don't have admin access to repository so i can't fix it.
UPDATED: Answering comments: i have checked same subversion client as server use (1.6.6), latest stable (1.6.17) and beta version (1.7). All gives exactly same error. Also, i can successfully checkout 'broken' repository: latest revision, revision in question (12893), revision before it (12892) and revision after it (12894) without any errors.
UPDATED: Answering more comments: svn log shows that in revision 12892 folder 'to' was moved from /repo/other_project/trunk/source_path
into /repo/project_name/trunk/path
Given that you can checkout revisions before and after this I would guess that you do not have any repository corruption. svnsync works by "replaying" transactions as opposed to mirroring data or something like that. As such, there can be bugs that prevent it from replaying a transaction. I would guess something about that commit has triggered a bug. You can run svn log -c 12893 -v to look at the revision in more detail. I would guess it has something in it like a 'R'eplace that is causing the problem. You could gather info and send it to users@subversion.apache.org so that it could be analyzed and hopefully fixed.
Here are some other ideas:
How is the source repository accessed? file:// http:// etc. If it is http:// you could try changing from using the default HTTP library of Neon to Serf and see if it still has the problem. You can do that by adding --config-option=servers:global:http-library=serf to the svnsync command when you run it. It is worth a try.
See if you can dump the revision. svnadmin dump -r12892:12893 --incremental reposname > dumpfile
If you can dump the revision, then load you can manually load it into the target repository using svnadmin load.
If you can load the revision, then you can manually fix the properties for svnsync so that it know it did that revision. svn ps --revprop -r0 svn:sync-last-merged-rev 123893 url://to/mirror
UPDATED: The problem was solved by using new svnrdump
utility from subversion 1.7 RC2.