We have Subversion 1.6.11 with FSFS backend on CentOS 6.3 served via svnserve -d. I had moved us to a new server and somehow screwed up the loading of the dump files (we used Chris Knights svnbackup.pl and svnrestore.pl which basically do svnadmin dump and load). We went a week with a bunch of checksum errors for anyone who had a file from a missing revision in their working directory. They would go to update and the checksum for that file would not exist anywhere on the new server because the revision had not been loaded during the server migration.

I decided to just reload the full dumps to newly created repos and then just do one incremental dump from the problematic repos just to capture any commits from the last week, and I restored it on top of the full dump,

Now I have new repos that are in sync with the old repos abd also have the last week's work.

My question is: If a revision is missing, how does that affect the files modified in the paths from that revision in their younger (more recent/higher numbered) revisions? If someone added a function in revision 50 for test.cpp and the next time that file was modified is in revision 70 and revision 90, and I do a restore that somehow loses revision 50, will test.cpp be missing that function in revisions 70 and 90? I know there is some binary math formula for figuring out the skip delta scenario, but lets pretend I am not smart enough to grasp that, and dumb it down for me please.


Assuming nothing's horribly wrong with how the script is doing the dump and load functions, no.

The dump format is independent from the repository format. A file that changes in a single-revision dump will end up completely as it was at the revision in the dump, regardless of any missing intervening revisions (and potentially blowing away changes made since the dumped revision). The dump format doesn't make assumptions about the availability of past revisions.

  • It's just doing svnadmin dump -r 1500:3000 --incremental /oldRepo >myDumps.svn and then a cat myDumps.svn |svnadmin load /newRepo – user160910 May 7 '13 at 19:39
  • 1
    @GreggLeventhal For any file that was modified in r1500-3000, it will, after being loaded, be at its r3000 state (even if there was a change in, say, r1400 which was never loaded into the new repo - that change will be present after the load as long as the file was modified in one of the loaded revisions). – Shane Madden May 7 '13 at 21:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy