diff options
author | Joey Hess <joey@kitenet.net> | 2012-03-10 15:37:38 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-03-10 15:37:38 -0400 |
commit | 997e29f29491868f7d83235cdc2d312263509167 (patch) | |
tree | b1df5d10e74e3fe9b7688c2a066b04b0caafe8ae /Command | |
parent | 5ab82230f7668897a62f40fa100e51bb53d0c38e (diff) |
sync: Sync to lower cost remotes first.
This has two benefits.
1. When a lot of refs are going to be received, get them via lower cost
connection when possible.
2. Allows ctrl-c of sync after the cheaper remotes have been pulled from
(or pushed to).
Diffstat (limited to 'Command')
-rw-r--r-- | Command/Sync.hs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/Command/Sync.hs b/Command/Sync.hs index f7ebba6f5..51b6d6f63 100644 --- a/Command/Sync.hs +++ b/Command/Sync.hs @@ -59,14 +59,14 @@ syncRemotes rs = do where pickfast = (++) <$> listed <*> (good =<< fastest <$> available) wanted - | null rs = good =<< available + | null rs = good =<< concat . byspeed <$> available | otherwise = listed listed = catMaybes <$> mapM (Remote.byName . Just) rs available = filter nonspecial <$> Remote.enabledRemoteList good = filterM $ Remote.Git.repoAvail . Types.Remote.repo nonspecial r = Types.Remote.remotetype r == Remote.Git.remote - fastest = fromMaybe [] . headMaybe . - map snd . sort . M.toList . costmap + fastest = fromMaybe [] . headMaybe . byspeed + byspeed = map snd . sort . M.toList . costmap costmap = M.fromListWith (++) . map costpair costpair r = (Types.Remote.cost r, [r]) |