Terry Dooher wrote on Tue, May 03, 2016 at 11:07:25 +0000: > From: Stefan Fuhrmann [mailto:stef...@apache.org] 29 April 2016 08:29 > > The best way to detect an incomplete dump is to run 'svn log -v -q' > > on the repository root. The output must be the same for the old and new > > repository. > > That's good to know. Tests so far show all dumps/loads to succeed, > with no errors in my case. I'll compare the logs to be certain, > though.
Another option: dump the new repository and diff the dump to a dump of the old repository. This will catch far more problems than diffing 'log -v' outputs. There are a number of complications here: - Deltas are compressed, so if you pass --deltas and the two producers used different zlib versions, the dumpfiles might differ even for the same repository instance. - A dump without --deltas is quite large. - There is no option to emit non-compressed deltas (svndiff0 rather than svndiff1). Furthermore, there used to be a few sources of non-determinism (e.g., node header order and APR hash order), but I think Philip eliminated them. (I checked docs and history but couldn't determine which release those changes first apepared in.) So, in practice, I think one of these should work: - cmp <(svnadmin1 dump --incremental old) <(svnadmin2 dump --incremental new) [ adding --deltas might introduce false positives ] - cmp <(svnrdump2 dump url://old) <(svnadmin2 dump --deltas --incremental new) - Run incremental, non-deltas, single-revision dumps on both repositories; checksum them; and compare the lists of (revnum, checksum). The lists should be identical. All three variants could false positive if one of the producers (generally the older one) was non-deterministic. Cheers, Daniel P.S. <(${command}) is a shell construct (supported by bash and zsh, possibly in the process of being standardised?) that evalutes to the filename of a readable fifo producing the output of ${command}; e.g., «cat <(echo hello world)».