While creating a replica of an existing repository using svnsync, I bumped into a problem that I'm trying to figure out.

In short, I don't think SVN is to blame but that we've got a corrupted transaction/file somewhere. I'm just trying to figure out the options and next steps to fix this.

This is what happens: we create an empty repository and start syncing it with a remote one. At a certain transaction, we get the error 'Decompression of svndiff data failed' and the syncing stops. If I look at the files in that transaction (using svn log --verbose) I only see two files with a .java_ extension. I suspect that these are text files, maybe leftovers of a text editor.

I've done some investigations on internet and had a look at the subversion files, especially subversion/libsvn_delta/svndiff.c. The error is linked to the 'uncompress' function of zlib. As I understand it, svnsync is replaying all the transactions from the original repository - or at least as much as possible giving the properties of the revision, etc.

My questions:
- I suspect this error is related to a corrupted (or missing) file. Is this correct?

- Is zlib used for some other purpose within svn that I don't know about (except for zip/unzip of a file)?

- is there any way to figure out which file in that transaction is giving this error? Or see the 'contents' of the transaction in full? svnsync doesn't seem to have a verbose mode that tells what exactly it is doing

- Can I trust the output of 'svn diff --summarize? Since that invokes the same file/library (svndiff.c) as svnsync.

Thanks for your ideas.


Marc Verwerft