summaryrefslogtreecommitdiff
path: root/Remote/Git.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Remote/Git.hs')
-rw-r--r--Remote/Git.hs18
1 files changed, 8 insertions, 10 deletions
diff --git a/Remote/Git.hs b/Remote/Git.hs
index b1f83b572..a857d5c14 100644
--- a/Remote/Git.hs
+++ b/Remote/Git.hs
@@ -228,17 +228,14 @@ inAnnex r key
| Git.repoIsUrl r = checkremote
| otherwise = checklocal
where
- checkhttp headers = liftIO $ go undefined $ keyUrls r key
- where
- go e [] = return $ Left e
- go _ (u:us) = do
- res <- catchMsgIO $
- Url.check u headers (keySize key)
- case res of
- Left e -> go e us
- v -> return v
+ checkhttp headers = do
+ showchecking
+ liftIO $ ifM (anyM (\u -> Url.check u headers (keySize key)) (keyUrls r key))
+ ( return $ Right True
+ , return $ Left "not found"
+ )
checkremote = do
- showAction $ "checking " ++ Git.repoDescribe r
+ showchecking
onRemote r (check, unknown) "inannex" [Param (key2file key)] []
where
check c p = dispatch <$> safeSystem c p
@@ -253,6 +250,7 @@ inAnnex r key
dispatch (Right (Just b)) = Right b
dispatch (Right Nothing) = unknown
unknown = Left $ "unable to check " ++ Git.repoDescribe r
+ showchecking = showAction $ "checking " ++ Git.repoDescribe r
{- Runs an action on a local repository inexpensively, by making an annex
- monad using that repository. -}