git-annex/doc/bugs/ssh_connection_caching_broken_on_NTFS.mdwn

66 lines
3.7 KiB
Markdown

TL;DNR ssh connection caching seems to cause git-annex to not work on NTFS volumes. Setting `annex.sshcaching` to `false` seems to solve the problem.
## What version of git-annex are you using? On what operating system? Please provide any additional information below.
* git-annex version: 3.20120629 on Debian Testing.
* `the-repo` is located on an NTFS volume on a USB HDD.
* `the-remote` is on the server `example.com`.
* `example.com` is running gitolite3 v3.2-19-gb9bbb78, git 1.7.2.5, and git-annex 3.20120629~bpo60+2
## What steps will reproduce the problem? What is the expected output? What do you see instead?
Create or clone a repo onto an NTFS volume.
Make sure `git annex` is initialized.
Run some regular git operations. These always seem to work.
Try git-annex operations.
Some operations work despite the error messages:
$ git annex sync
Control socket connect(/media/NTFSVOL/the-repo/.git/annex/ssh/git@example.com): Connection refused
Failed to connect to new control master
Command ssh ["-S","/media/NTFSVOL/the-repo/.git/annex/ssh/git@example.com","-o","ControlMaster=auto","-o","ControlPersist=yes","git@example.com","git-annex-shell 'configlist' '/~/the-repo.git'"] failed; exit code 255
Control socket connect(/media/NTFSVOL/the-repo/.git/annex/ssh/git@example.com): Connection refused
Failed to connect to new control master
Command ssh ["-S","/media/NTFSVOL/the-repo/.git/annex/ssh/git@example.com","-o","ControlMaster=auto","-o","ControlPersist=yes","git@example.com","git-annex-shell 'configlist' '/~/the-repo'"] failed; exit code 255
commit
# On branch master
nothing to commit (working directory clean)
ok
pull the-remote
ok
pull origin
ok
Other operations fail:
$ git annex copy -t the-remote the-file.jpg
Control socket connect(/media/NTFSVOL/the-repo/.git/annex/ssh/git@example.com): Connection refused
Failed to connect to new control master
Command ssh ["-S","/media/NTFSVOL/the-repo/.git/annex/ssh/git@example.com","-o","ControlMaster=auto","-o","ControlPersist=yes","git@example.com","git-annex-shell 'configlist' '/~/the-repo.git'"] failed; exit code 255
Control socket connect(/media/NTFSVOL/the-repo/.git/annex/ssh/git@example.com): Connection refused
Failed to connect to new control master
Command ssh ["-S","/media/NTFSVOL/the-repo/.git/annex/ssh/git@example.com","-o","ControlMaster=auto","-o","ControlPersist=yes","git@example.com","git-annex-shell 'configlist' '/~/the-repo'"] failed; exit code 255
copy the-file.jpg (checking the-remote...) Control socket connect(/media/NTFSVOL/the-repo/.git/annex/ssh/git@example.com): Connection refused
Failed to connect to new control master
(unable to check the-remote) failed
git-annex: copy: 1 failed
Some googling revealed the errors to be stale socket files.
- [Three SSH Tips](http://shallowsky.com/blog/tags/ssh/)
- [Improving SSH (OpenSSH) connection speed with shared connections](http://protempore.net/~calvins/howto/ssh-connection-sharing/#section-03)
It appears that SSH connection caching was implemented in response to this wishlist item:
[wishlist: Prevent repeated password prompts for one command](http://git-annex.branchable.com/todo/wishlist:_Prevent_repeated_password_prompts_for_one_command/)
However ssh connection caching breaks things on NTFS volumes. If I turn off connection caching, it seems to work fine
$ git config annex.sshcaching false
but it would be nifty if git-annex could detect the filesystem type and do The Right Thing.
Thanks for all the work on git-annex -- it's an awesome project!
> [[done]], `git annex init` now probes for fifo support and disables ssh
> connection caching if it cannot make one. --[[Joey]]