On Mon, Oct 20, 2014 at 06:41:00PM +0400, Lev Serebryakov wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA512
> 
> 
>  I'm trying to recover SVN repository (which is mirror of other repo)
> after (physical) server crash in process of "svnsync".
> 
>  svnadmin verify gives me:
> 
> * Verifying metadata at revision 269998 ...
> svnadmin: E200002: Serialized hash missing terminator
> #
> 
>  Please note, that 269998 is almost-round number. It is because I've
> renmoved whole 270xxx range (latest one) of revisions (and their
> properties) from repository, as them was synced in moment of crash. So,
> all 269xxx revisions are OLD ones, which WAS NOT DAMAGED. I've checked
> 269998/269999 revisions properties — they are OK.
> 
>  Is here any way to learn WHICH "Serialized hash" is damaged?! Why file
> name is not included in error message?

That serialised hash is inside a revprops file. You won't be able
to fix this directly unless you understand how FSFS stores data.
If you really want to know, start reading here:
https://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_fs_base/notes/structure
and then this:
https://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_fs_fs/structure

I would recommend you reset the mirrored repository to the
last known-good revision (269997?) by moving out of the way all files
belonging to newer revisions (in db/revs) and revprops (in db/revprops),
running 'svnadmin recover' (this should set db/current to the number
of the last known-good revision), and finally editing the
svn:sync-last-merged-rev revision property with
  'svn pe -r0 --revprop REPOS_URL'
to write the number of the last known-good revision in there.

Now you should have a working repository that is synced up to the
last known-good revision and 'svnsync sync' should catch up again.

Reply via email to