I just created a gcrypt special remote and got an error from (I think) git-annex-shell
, though my local git-annex didn't complain and seemed to think the creation went okay.
annex $ ga initremote ma type=gcrypt encryption=hybrid gitrepo=ssh://ma/meta/s/spw/local/annex keyid=3B6D411B
(merging synced/git-annex into git-annex...)
(Recording state in git...)
initremote ma (encryption setup) (hybrid cipher with gpg key 0F56D0553B6D411B) gcrypt: Development version -- Repository format MAY CHANGE
gcrypt: Repository not found: ssh://ma/meta/s/spw/local/annex
gcrypt: Development version -- Repository format MAY CHANGE
gcrypt: Repository not found: ssh://ma/meta/s/spw/local/annex
gcrypt: Setting up new repository
gcrypt: Remote ID is :id:icUy+qU392R5L5H7g8Yk
Counting objects: 111456, done.
Compressing objects: 100% (74045/74045), done.
Total 111456 (delta 59312), reused 85857 (delta 33717)
gcrypt: Encrypting to: -r 0F56D0553B6D411B
gcrypt: Requesting manifest signature
To gcrypt::ssh://ma/meta/s/spw/local/annex
* [new branch] git-annex -> git-annex
fatal: What do you think I am? A shell?
git-annex-shell: git-shell failed
ok
(Recording state in git...)
Further git annex sync ma
runs go off without a hitch and the master branch gets pushed a synced/master, though it didn't get pushed on this initial creation as can be seen from the above output.
Is it a bug that my local git-annex said "ok" when there was an error, or is this just a case of my local git-annex falling back to rsync instead of git-annex-shell because I didn't set up my $PATH properly on the remote? Should I be worried that my gcrypt repo wasn't set up correctly and thus can't be trusted to hold my annexed data and metadata? Thanks.
Local git-annex: 5.20141125. Remote git-annex (standalone build): 5.20150113-gcf247cf.
It seems that some versions of git-shell will give this unhelpful error message. Newer versions instead say "fatal: Interactive git shell is not enabled."
The initial push of the git-annex branch is not what failed. It seems that the attempt to run "git-annex-shell gcryptsetup" was what failed.
My guess is that the remote server has an older version of git-annex installed in /usr/bin, which doesn't understand the gcryptsetup command, and that your newer installation of the standalone version is not getting run when it sshes in. (A common problem;
~/.bashrc
and~/.bash_profile
are both ignored.) The old version of git-annex-shell then passed the "gcryptsetup" command on to git-shell, which I guess rejected it like that. (Not sure why.)git-annex seems to have successfully fallen back to using rsync to configure the ssh://ma/meta/s/spw/local/annex repository's core.gcrypt-id. (You might want to check that was set correctly.)
Also, since it detected an old/not-working git-annex-shell on the remote, it will have set git.remote.ma.gcrypt to "true", rather than "shell", and this will cause git-annex to bypass using git-annex-shell and instead use direct rsync.
The
core.gcrypt-id
on the remote and local is correctly set (to the same thing) andgit.remote.ma.annex-gcrypt
(I assume you meant this and notgit.remote.ma.gcrypt
) on my local machine is indeed set totrue
. And the remote seems to work for all purposes I've tried to use it for. So I guess I'm okay.There is an older version in
/usr/bin
as you suggest: 3.20120523. I don't know why I didn't notice this myself before I installed the standalone build.Thank you for taking the time to reply.