diff options
-rw-r--r-- | Command/Sync.hs | 8 | ||||
-rw-r--r-- | Remote.hs | 8 |
2 files changed, 10 insertions, 6 deletions
diff --git a/Command/Sync.hs b/Command/Sync.hs index 986dd417b..2a27bf870 100644 --- a/Command/Sync.hs +++ b/Command/Sync.hs @@ -27,7 +27,6 @@ import qualified Types.Remote import qualified Remote.Git import Types.Key -import qualified Data.Map as M import qualified Data.ByteString.Lazy as L import Data.Hash.MD5 @@ -62,7 +61,7 @@ syncRemotes rs = ifM (Annex.getState Annex.fast) ( nub <$> pickfast , wanted ) where pickfast = (++) <$> listed <*> (good =<< fastest <$> available) wanted - | null rs = good =<< concat . byspeed <$> available + | null rs = good =<< concat . Remote.byCost <$> available | otherwise = listed listed = do l <- catMaybes <$> mapM (Remote.byName . Just) rs @@ -74,10 +73,7 @@ syncRemotes rs = ifM (Annex.getState Annex.fast) ( nub <$> pickfast , wanted ) available = filter (not . Remote.specialRemote) <$> Remote.enabledRemoteList good = filterM $ Remote.Git.repoAvail . Types.Remote.repo - fastest = fromMaybe [] . headMaybe . byspeed - byspeed = map snd . sort . M.toList . costmap - costmap = M.fromListWith (++) . map costpair - costpair r = (Types.Remote.cost r, [r]) + fastest = fromMaybe [] . headMaybe . Remote.byCost commit :: CommandStart commit = do @@ -24,6 +24,7 @@ module Remote ( remoteMap, uuidDescriptions, byName, + byCost, prettyPrintUUIDs, prettyListUUIDs, remotesWithUUID, @@ -224,3 +225,10 @@ forceTrust level remotename = do - on the remote, but this cannot always be relied on. -} logStatus :: Remote -> Key -> LogStatus -> Annex () logStatus remote key = logChange key (uuid remote) + +{- Orders remotes by cost, with ones with the lowest cost grouped together. -} +byCost :: [Remote] -> [[Remote]] +byCost = map snd . sort . M.toList . costmap + where + costmap = M.fromListWith (++) . map costpair + costpair r = (cost r, [r]) |