f07af03018
... to avoid it consuming stdin that it shouldn't. This fixes git-annex-checkpresentkey --batch remote, which didn't output results for all keys passed into it. Other git-annex commands that communicate with a remote over ssh may also have been consuming stdin that they shouldn't have, which could have impacted using them in eg, shell scripts. For example, a shell script reading files from stdin and passing them to git annex drop would be impacted by this bug, whenever git annex drop ran git-annex-shell checkpresent, it would consume part/all of the stdin that the shell script was supposed to consume. Fixed by adding a ConsumeStdin parameter to Annex.Ssh.sshOptions, which is used throughout git-annex to run ssh (in order for ssh connection caching to work). Every call site was checked to see if it used CreatePipe for stdin, and if not was marked NoConsumeStdin.
28 lines
799 B
Haskell
28 lines
799 B
Haskell
{- git-remote-daemon, gcrypt transport
|
|
-
|
|
- Copyright 2015 Joey Hess <id@joeyh.name>
|
|
-
|
|
- Licensed under the GNU GPL version 3 or higher.
|
|
-}
|
|
|
|
module RemoteDaemon.Transport.GCrypt (transport) where
|
|
|
|
import Annex.Common
|
|
import RemoteDaemon.Types
|
|
import RemoteDaemon.Common
|
|
import RemoteDaemon.Transport.Ssh (transportUsingCmd)
|
|
import Git.GCrypt
|
|
import Remote.Helper.Ssh
|
|
import Remote.GCrypt (accessShellConfig)
|
|
import Annex.Ssh
|
|
|
|
transport :: Transport
|
|
transport rr@(RemoteRepo r gc) url h@(TransportHandle (LocalRepo g) _) ichan ochan
|
|
| accessShellConfig gc = do
|
|
r' <- encryptedRemote g r
|
|
v <- liftAnnex h $ git_annex_shell ConsumeStdin r' "notifychanges" [] []
|
|
case v of
|
|
Nothing -> noop
|
|
Just (cmd, params) ->
|
|
transportUsingCmd cmd params rr url h ichan ochan
|
|
| otherwise = noop
|