As you can see, I'm running a pretty recent build of git-annex (ac799c3f363e0008b23e9c174e6fedc35e6fa92a),
$ git annex version
git-annex version: 3.20120630
local repository version: 3
default repository version: 3
supported repository versions: 3
upgrade supported from repository versions: 0 1 2
We have a file here which isn't currently available yet isn't currently available (the link is shown in red),
$ ls -l plot.py
lrwxrwxrwx 1 ben ben 77 Jul 6 14:01 plot.py -> ../.git/annex/objects/WORM:1301941019:720:plot.py/WORM:1301941019:720:plot.py
$
Yet git-annex should be able to tell us where it is,
$ git-annex whereis plot.py
$
Hmm, well that's strange. What's happening here,
$ git-annex whereis plot.py -d
git ["--git-dir=/home/ben/lori/analysis/data/.git","--work-tree=/home/ben/lori/analysis/data","show-ref","git-annex"]
git ["--git-dir=/home/ben/lori/analysis/data/.git","--work-tree=/home/ben/lori/analysis/data","show-ref","--hash","refs/heads/git-annex"]
git ["--git-dir=/home/ben/lori/analysis/data/.git","--work-tree=/home/ben/lori/analysis/data","log","refs/heads/git-annex..d5582e05f41011b571a17003934fe9e40859e4be","--oneline","-n1"]
git ["--git-dir=/home/ben/lori/analysis/data/.git","--work-tree=/home/ben/lori/analysis/data","cat-file","--batch"]
git ["--git-dir=/home/ben/lori/analysis/data/.git","--work-tree=/home/ben/lori/analysis/data","ls-files","--cached","-z","--","plot.py"]
$
Alright, well maybe git-annex get
will work,
$ git annex get plot.py -d
git ["--git-dir=/home/ben/lori/analysis/data/.git","--work-tree=/home/ben/lori/analysis/data","ls-files","--cached","-z","--","plot.py"]
$ ls -l plot.py
lrwxrwxrwx 1 ben ben 77 Jul 6 14:01 plot.py -> ../.git/annex/objects/WORM:1301941019:720:plot.py/WORM:1301941019:720:plot.py
Nope, the link is still shown in red.
Alright, what about git-annex copy
?
$ git annex copy plot.py --from=goldnerlab --to=here -d
git ["--git-dir=/home/ben/lori/analysis/data/.git","--work-tree=/home/ben/lori/analysis/data","show-ref","git-annex"]
git ["--git-dir=/home/ben/lori/analysis/data/.git","--work-tree=/home/ben/lori/analysis/data","show-ref","--hash","refs/heads/git-annex"]
git ["--git-dir=/home/ben/lori/analysis/data/.git","--work-tree=/home/ben/lori/analysis/data","log","refs/heads/git-annex..d5582e05f41011b571a17003934fe9e40859e4be","--oneline","-n1"]
git ["--git-dir=/home/ben/lori/analysis/data/.git","--work-tree=/home/ben/lori/analysis/data","cat-file","--batch"]
git ["--git-dir=/home/ben/lori/analysis/data/.git","--work-tree=/home/ben/lori/analysis/data","ls-files","--cached","-z","--","plot.py"]
$ ls -l plot.py
lrwxrwxrwx 1 ben ben 77 Jul 6 14:01 plot.py -> ../.git/annex/objects/WORM:1301941019:720:plot.py/WORM:1301941019:720:plot.py
Still red.
Alright, what if I just try to get a non-existent file?
$ git annex get adsflkah -d
git ["--git-dir=/home/ben/lori/analysis/data/.git","--work-tree=/home/ben/lori/analysis/data","ls-files","--cached","-z","--","adsflkah"]
$
Alright, it didn't fail with an error, that's very strange. What is going on here?
git ls-files
is not listing your file. Perhaps your file is not checked into git?Not really sure what to say about that other than,
What does
Show?
Do you have any remotes configured? It looks like you don't somehow.
Well that's odd. You have remotes but no annexed files..
Can you post the commands you used to arrive at this situation? I'm not sure how you would have done that.. Maybe you just need a
to get things going?
I think somehow you cloned the git repo but not the annex stuff.
I can easily reproduce the issue as follows,
Everything looks good so far. I verify that alex/plot.py doesn't exist. Now let's try getting it,
Uh oh. ls confirms that get was unsucessful.
But how was the goldnerlab:data repository created? That looks to be where the problem is..
I have a slightly older version, but in general it should work the same.. you can see right away, when I do git annex status it shows "known annex keys: 1". if you do git annex status on goldnerlab, does it say you have any annex keys?
On goldnerlab,
Can you run the series of commands I had above on your two machines? I figure there are two possibilities:
so if you can make a temp repository on goldnerlab, then clone it on the other machine and see where it fails, that would be helpful.
after cloning git-annex status should hopefully say that you have 1 known key, not 0.
Obviously this won't fix the problem, but it will at least narrow it down.
I suppose.. joey can probably help you investigate exactly what went wrong. You might want to save an empty clone of the git repository for later..
The easiest way to fix the data is probably to run a
git annex uninit
in the old repository which will put the files back how they were before and thengit-annex import
them into a new repository.Looking at this a leetle more closely, you had:
Well, that is not how a git-annex symlink currently looks, so it ignores it.
Apparenly this repository was created with an old version of git-annex, possibly version 1, and you've dropped in the current version, but the normal upgrade machinery failed. This could happen if you made a new clone of a version 1 bare repository.
I suggest you first find out what version of git-annex was originally used to create this repository (ie, version 0, 1, or 2 ... probably 1). Then make a clone, and "git config annex.version $N" where N=the version used). Then "git annex upgrade" and you should be good to go. Remember to push or sync the upgrade back to the bare repo so you don't need to do this again.