My local git index got corrupted and I needed to clone and annex get all data from my main repo.

Some files were never copied anywhere so I am stuck with symlinks to nowhere.

I tried to copy over the symlink with a copy of the actual file, which did not work. Trying to unlock, copying over the symlink, and relock did not work, either.

Then, I copied the annex object to the correct place in .git/annex/objects/..., set all modes, re-ran fsck and the file re-appeared.

Long story short, I think there should be a git annex reinject $file or similar which will take a file, either one replacing the symlink or with an arbitrary path, and put it into the correct place in the object store. Called normally, it should reject all reinjects where the checksum does not match. With --force, this should be overridden. For reasons of safety, WORM should always require --force.

closing, seems addressed --Joey

Have you seen recover data from lost+found? The method described there will also work in this scenario.
Comment by http://joey.kitenet.net/ Sun Apr 3 01:46:16 2011

I did not. Thanks :)

This still means that you can't re-inject a new version of a file unless you have the old one if you are using a SHA* backend, but that might be a corner case anyway.

To re-inject new content for a file, you really want to get a new key for the file. Otherwise, other repos that have the old file will never get the new content. So:

git rm file
mv ~/newcontent file
git annex add file
Comment by http://joey.kitenet.net/ Sat May 14 16:28:36 2011
Now available as git-annex reinject.
Comment by http://joey.kitenet.net/ Sat May 14 16:29:35 2011
Comments on this page are closed.