diff options
author | Joey Hess <joeyh@joeyh.name> | 2015-08-04 15:27:48 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2015-08-04 15:27:48 -0400 |
commit | 6b0ee8a9721eaf8a62b187e9b52c21269b630301 (patch) | |
tree | 234b71017e2f531ae219ee24c3d45ad6ac95c53c /Annex/Ssh.hs | |
parent | 058e0e562ca14bcc4953ca449c26ef5ae6122b40 (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.hs | 18 |
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 |