Suppose something goes wrong, and fsck puts all the files in lost+found. It's actually very easy to recover from this disaster.

First, check out the git repository again. Then, in the new checkout:

$ mkdir recovered-content
$ sudo mv ../lost+found/* recovered-content
$ sudo chown you:you recovered-content
$ chmod -R u+w recovered-content
$ git annex add recovered-content
$ git reset HEAD recovered-content
$ rm -rf recovered-content
$ git annex fsck

The way that works is that when git-annex adds the same content that was in the repository before, all the old links to that content start working again. This works particularly well if the SHA* backends are used, but even with the default backend it will work pretty well, as long as fsck preserved the modification time of the files.

Other steps I understand but what is the purpose of the last, "git annex fsck"? Shouldn't "git annex add" recreate any missing annex files and therefore fix dangling symlinks?

The git annex fsck at the end will verify if you've managed to recover all the files.
Comment by http://joeyh.name/ Fri Jan 3 17:19:39 2014
Comments on this page are closed.