This commit is contained in:
Joey Hess 2012-08-26 14:45:47 -04:00
parent f4ca592cd0
commit c58d553265
2 changed files with 10 additions and 6 deletions

View file

@ -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

View file

@ -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])