You're not currently signed in.

Supposing you have a local SVK repository of one (or several) remote SVN repositories. Each commit is stored in a separate file (in a directory similar to .svk/local/db/revs). When attempting to sync back to the remote repository, the kernel responds with an error indicating that one of the revision files is sitting on a bad sector and cannot be read. Hence, the update fails.

If not too many commits follow on from the borked revision file, you can dump the local repository out, from revision 0 to revision #bad-1. Then move the directory of the existing local repo out of the way, and create a new repo in its place. Then load the dump into the new repository. The commands to do this go something like this:

Assumptions:

  • repo base is /home/user/.svk
  • local mirror is named //local/
  • bad revision file is 1248
cd /home/user/.svk
mv local local-bad
svk depotmap --init /home/user/.svk/local
svnadmin dump -r 0:1247 ~/.svk/local-bad >local-bad.dump
svnadmin load --force-uuid /home/user/.svk/local <local-bad.dump

The repository is now at the state just prior to the bad revision. The way forward is either to sync up to the remote repository, if it has shifted, and deal with the merges, or else commit all the outstanding changes to the local repo and then sync back to the remote repository.

Credit for this technique goes to Jared Hardy.