summaryrefslogtreecommitdiff
path: root/doc/bugs/ssh_connection_caching_broken_on_NTFS.mdwn
blob: fc3168e0f2074eafcc5068a311f193a8e6bce5e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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]]