summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Annex/Ssh.hs28
1 files changed, 16 insertions, 12 deletions
diff --git a/Annex/Ssh.hs b/Annex/Ssh.hs
index 06e3ac449..7ead526cb 100644
--- a/Annex/Ssh.hs
+++ b/Annex/Ssh.hs
@@ -250,18 +250,22 @@ inRepoWithSshCachingTo remote a =
- and set sshCachingEnv so that git-annex will know what socket
- file to use. -}
sshCachingTo :: Git.Repo -> Git.Repo -> Annex Git.Repo
-sshCachingTo remote g = case Git.Url.hostuser remote of
- Nothing -> return g
- Just host -> do
- (msockfile, _) <- sshInfo (host, Git.Url.port remote)
- case msockfile of
- Nothing -> return g
- Just sockfile -> do
- command <- liftIO readProgramFile
- prepSocket sockfile
- liftIO $ do
- g' <- addGitEnv g sshCachingEnv sockfile
- addGitEnv g' "GIT_SSH" command
+sshCachingTo remote g
+ | not (Git.repoIsUrl remote) || Git.repoIsHttp remote = uncached
+ | otherwise = case Git.Url.hostuser remote of
+ Nothing -> uncached
+ Just host -> do
+ (msockfile, _) <- sshInfo (host, Git.Url.port remote)
+ case msockfile of
+ Nothing -> return g
+ Just sockfile -> do
+ command <- liftIO readProgramFile
+ prepSocket sockfile
+ liftIO $ do
+ g' <- addGitEnv g sshCachingEnv sockfile
+ addGitEnv g' "GIT_SSH" command
+ where
+ uncached = return g
runSshCaching :: [String] -> String -> IO ()
runSshCaching args sockfile = do