diff options
5 files changed, 34 insertions, 12 deletions
diff --git a/Annex/Ssh.hs b/Annex/Ssh.hs index e92232b6f..9d716cdc8 100644 --- a/Annex/Ssh.hs +++ b/Annex/Ssh.hs @@ -263,9 +263,10 @@ inRepoWithSshOptionsTo remote gc a = {- To make any git commands be run with ssh caching enabled, - and configured ssh-options alters the local Git.Repo's gitEnv - - to set GIT_SSH=git-annex, and sets sshOptionsEnv. -} + - to set GIT_SSH=git-annex, and set sshOptionsEnv when running git + - commands. -} sshOptionsTo :: Git.Repo -> RemoteGitConfig -> Git.Repo -> Annex Git.Repo -sshOptionsTo remote gc g +sshOptionsTo remote gc localr | not (Git.repoIsUrl remote) || Git.repoIsHttp remote = unchanged | otherwise = case Git.Url.hostuser remote of Nothing -> unchanged @@ -277,7 +278,7 @@ sshOptionsTo remote gc g prepSocket sockfile use (sshConnectionCachingParams sockfile) where - unchanged = return g + unchanged = return localr use opts = do let sshopts = concat @@ -289,9 +290,9 @@ sshOptionsTo remote gc g else do command <- liftIO programPath liftIO $ do - g' <- addGitEnv g sshOptionsEnv + localr' <- addGitEnv localr sshOptionsEnv (toSshOptionsEnv sshopts) - addGitEnv g' "GIT_SSH" command + addGitEnv localr' "GIT_SSH" command runSshOptions :: [String] -> String -> IO () runSshOptions args s = do diff --git a/Assistant/Sync.hs b/Assistant/Sync.hs index d914d2246..7a9ea6a86 100644 --- a/Assistant/Sync.hs +++ b/Assistant/Sync.hs @@ -28,6 +28,7 @@ import qualified Remote.List as Remote import qualified Annex.Branch import Annex.UUID import Annex.TaggedPush +import Annex.Ssh import qualified Config import Git.Config import Assistant.NamedThread @@ -148,7 +149,7 @@ pushToRemotes' now notifypushes remotes = do go _ _ _ _ [] = return [] -- no remotes, so nothing to do go shouldretry (Just branch) g u rs = do debug ["pushing to", show rs] - (succeeded, failed) <- liftIO $ inParallel (push g branch) rs + (succeeded, failed) <- parallelPush g rs (push branch) updatemap succeeded [] if null failed then do @@ -172,15 +173,24 @@ pushToRemotes' now notifypushes remotes = do fallback branch g u rs = do debug ["fallback pushing to", show rs] - (succeeded, failed) <- liftIO $ - inParallel (\r -> taggedPush u Nothing branch r g) rs + (succeeded, failed) <- parallelPush g rs (taggedPush u Nothing branch) updatemap succeeded failed when (notifypushes && (not $ null succeeded)) $ sendNetMessage $ NotifyPush $ map Remote.uuid succeeded return failed - push g branch remote = Command.Sync.pushBranch remote branch g + push branch remote = Command.Sync.pushBranch remote branch + +parallelPush :: Git.Repo -> [Remote] -> (Remote -> Git.Repo -> IO Bool)-> Assistant ([Remote], [Remote]) +parallelPush g rs a = do + rgs <- liftAnnex $ mapM topush rs + (succeededrgs, failedrgs) <- liftIO $ inParallel (uncurry a) rgs + return (map fst succeededrgs, map fst failedrgs) + where + topush r = (,) + <$> pure r + <*> sshOptionsTo (Remote.repo r) (Remote.gitconfig r) g {- Displays an alert while running an action that syncs with some remotes, - and returns any remotes that it failed to sync with. @@ -221,8 +231,9 @@ manualPull :: Maybe Git.Ref -> [Remote] -> Assistant ([Remote], Bool) manualPull currentbranch remotes = do g <- liftAnnex gitRepo let (xmppremotes, normalremotes) = partition Remote.isXMPPRemote remotes - failed <- liftIO $ forM normalremotes $ \r -> - ifM (Git.Command.runBool [Param "fetch", Param $ Remote.name r] g) + failed <- forM normalremotes $ \r -> do + g' <- liftAnnex $ sshOptionsTo (Remote.repo r) (Remote.gitconfig r) g + ifM (liftIO $ Git.Command.runBool [Param "fetch", Param $ Remote.name r] g') ( return Nothing , return $ Just r ) diff --git a/debian/changelog b/debian/changelog index fd0dad986..ae0ece428 100644 --- a/debian/changelog +++ b/debian/changelog @@ -25,6 +25,8 @@ git-annex (5.20151102.2) UNRELEASED; urgency=medium * fsck: When fscking a dead repo, avoid incorrect "fixing location log" message, and display a message, since it's unusual to have access to a dead repo. + * assistant: Pass ssh-options through 3 more git pull/push calls + that were missed before. -- Joey Hess <id@joeyh.name> Wed, 04 Nov 2015 12:50:20 -0400 diff --git a/doc/bugs/annex-ssh-options_seem_to_be_ignored_in_some_occasion_by_the_assistnat.mdwn b/doc/bugs/annex-ssh-options_seem_to_be_ignored_in_some_occasion_by_the_assistnat.mdwn index 6616db835..fbc05c2c6 100644 --- a/doc/bugs/annex-ssh-options_seem_to_be_ignored_in_some_occasion_by_the_assistnat.mdwn +++ b/doc/bugs/annex-ssh-options_seem_to_be_ignored_in_some_occasion_by_the_assistnat.mdwn @@ -44,4 +44,4 @@ log from .git/annex/daemon.log: - +> [[fixed|done]] --[[Joey]] diff --git a/doc/bugs/annex-ssh-options_seem_to_be_ignored_in_some_occasion_by_the_assistnat/comment_1_ee684ab3e96a1c1317562d8228d41463._comment b/doc/bugs/annex-ssh-options_seem_to_be_ignored_in_some_occasion_by_the_assistnat/comment_1_ee684ab3e96a1c1317562d8228d41463._comment new file mode 100644 index 000000000..3a6e32bab --- /dev/null +++ b/doc/bugs/annex-ssh-options_seem_to_be_ignored_in_some_occasion_by_the_assistnat/comment_1_ee684ab3e96a1c1317562d8228d41463._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 1""" + date="2015-11-10T19:56:03Z" + content=""" +Ok, I was able to reproduce it, when using the assistant it seems the +option is not passed when pushing and fetching there. +"""]] |