summaryrefslogtreecommitdiff
path: root/Annex/Ssh.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-08-04 15:27:48 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-08-04 15:27:48 -0400
commit6b0ee8a9721eaf8a62b187e9b52c21269b630301 (patch)
tree234b71017e2f531ae219ee24c3d45ad6ac95c53c /Annex/Ssh.hs
parent058e0e562ca14bcc4953ca449c26ef5ae6122b40 (diff)
Windows: Fix bug that caused git-annex sync to fail due to missing environment variable.
I think that the problem was caused by windows not having a concept of an env var that is set, but to the empty string. So, GIT_ANNEX_SSHOPTION got set to "" and was not seen as set at all. Easy fix, which also makes git-annex sync a little faster is to not set GIT_SSH, when GIT_ANNEX_SSHOPTION has no options. Might as well let git use ssh per usual in this case, no need to run git-annex as the proxy ssh command..
Diffstat (limited to 'Annex/Ssh.hs')
-rw-r--r--Annex/Ssh.hs18
1 files changed, 11 insertions, 7 deletions
diff --git a/Annex/Ssh.hs b/Annex/Ssh.hs
index 4d54d728e..276bac5a4 100644
--- a/Annex/Ssh.hs
+++ b/Annex/Ssh.hs
@@ -266,7 +266,7 @@ inRepoWithSshOptionsTo remote gc a =
- to set GIT_SSH=git-annex, and sets sshOptionsEnv. -}
sshOptionsTo :: Git.Repo -> RemoteGitConfig -> Git.Repo -> Annex Git.Repo
sshOptionsTo remote gc g
- | not (Git.repoIsUrl remote) || Git.repoIsHttp remote = uncached
+ | not (Git.repoIsUrl remote) || Git.repoIsHttp remote = unchanged
| otherwise = case Git.Url.hostuser remote of
Nothing -> uncached
Just host -> do
@@ -277,17 +277,21 @@ sshOptionsTo remote gc g
prepSocket sockfile
use (sshConnectionCachingParams sockfile)
where
- uncached = return g
+ unchanged = return g
use opts = do
- let val = toSshOptionsEnv $ concat
+ let sshopts =
[ opts
, map Param (remoteAnnexSshOptions gc)
]
- command <- liftIO programPath
- liftIO $ do
- g' <- addGitEnv g sshOptionsEnv val
- addGitEnv g' "GIT_SSH" command
+ if null sshopts
+ then unchanged
+ else do
+ let val = toSshOptionsEnv (concat sshopts)
+ command <- liftIO programPath
+ liftIO $ do
+ g' <- addGitEnv g sshOptionsEnv val
+ addGitEnv g' "GIT_SSH" command
runSshOptions :: [String] -> String -> IO ()
runSshOptions args s = do