summaryrefslogtreecommitdiff
path: root/Remote/Git.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-03-29 16:21:21 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-03-29 16:21:21 -0400
commit475f7073613b7164302e3f826f60929cf4cd38f0 (patch)
tree8ce447a9549ede25e27fce04568955440ad539d7 /Remote/Git.hs
parente62f9816ab29dceb5489d520b9cf569ede2ffb52 (diff)
initremote now creates buckets
Diffstat (limited to 'Remote/Git.hs')
-rw-r--r--Remote/Git.hs16
1 files changed, 10 insertions, 6 deletions
diff --git a/Remote/Git.hs b/Remote/Git.hs
index 2d7a0c8ff..85bd04a23 100644
--- a/Remote/Git.hs
+++ b/Remote/Git.hs
@@ -15,6 +15,8 @@ import Control.Monad.State (liftIO)
import qualified Data.Map as M
import System.Cmd.Utils
import Control.Monad (filterM, liftM)
+import Data.String.Utils
+import Maybe
import RemoteClass
import Types
@@ -37,7 +39,7 @@ remote = RemoteType {
setup = error "not supported"
}
-gen :: Annex (RemoteGenerator Annex)
+gen :: Annex [Remote Annex]
gen = do
g <- Annex.gitRepo
allremotes <- filterM remoteNotIgnored $ Git.remotes g
@@ -52,18 +54,20 @@ gen = do
let skip = filter (`notElem` expensive_todo) expensive
let todo = cheap++expensive_todo
- let actions = map genRemote skip ++
- map (\r -> genRemote =<< tryGitConfigRead r) todo
- return (actions, map Git.repoDescribe expensive_todo)
+ showNote $ "getting UUID for " ++ (join ", " $
+ map Git.repoDescribe expensive_todo)
+ done <- mapM tryGitConfigRead todo
+ generated <- mapM genRemote $ skip ++ done
+ return $ catMaybes generated
where
cachedUUID r = liftM null $ getUUID r
-genRemote :: Git.Repo -> Annex (Remote Annex)
+genRemote :: Git.Repo -> Annex (Maybe (Remote Annex))
genRemote r = do
u <- getUUID r
c <- remoteCost r
- return Remote {
+ return $ Just $ Remote {
uuid = u,
cost = c,
name = Git.repoDescribe r,