skip local remotes that are not available (ie, not mounted)

With --fast, unavailable local remotes are filtered out of the fast set.
This way, if there are local remotes, --fast always acts only on them,
and if none are mounted, acts on nothing. This consistency is better
than --fast acting on different remotes depending on what's mounted.
This commit is contained in:
Joey Hess 2011-12-31 04:50:39 -04:00
parent 25e4b116c7
commit f0957426c5
3 changed files with 13 additions and 4 deletions

View file

@ -57,12 +57,13 @@ syncRemotes rs = do
then nub <$> pickfast
else wanted
where
pickfast = (++) <$> listed <*> (fastest <$> available)
pickfast = (++) <$> listed <*> (good =<< fastest <$> available)
wanted
| null rs = available
| null rs = good =<< available
| otherwise = listed
listed = mapM Remote.byName 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