svnsvnsync

Svnsync can't sync repository


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


Solution

  • 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:

    UPDATED: The problem was solved by using new svnrdump utility from subversion 1.7 RC2.