summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--BackendFile.hs5
-rw-r--r--Remotes.hs12
-rw-r--r--TODO2
-rw-r--r--UUID.hs10
4 files changed, 19 insertions, 10 deletions
diff --git a/BackendFile.hs b/BackendFile.hs
index d16f3611b..e821ac22b 100644
--- a/BackendFile.hs
+++ b/BackendFile.hs
@@ -40,10 +40,7 @@ dummyRemove url = return False
copyKeyFile :: Key -> FilePath -> Annex (Bool)
copyKeyFile key file = do
remotes <- remotesWithKey key
- if (0 == length remotes)
- then error $ "no known remotes have: " ++ (keyFile key) ++ "\n" ++
- "(Perhaps you need to git remote add a repository?)"
- else trycopy remotes remotes
+ trycopy remotes remotes
where
trycopy full [] = error $ "unable to get: " ++ (keyFile key) ++ "\n" ++
"To get that file, need access to one of these remotes: " ++
diff --git a/Remotes.hs b/Remotes.hs
index 13b87982c..f3af81f23 100644
--- a/Remotes.hs
+++ b/Remotes.hs
@@ -8,10 +8,11 @@ module Remotes (
import Control.Monad.State (liftIO)
import qualified Data.Map as Map
+import Data.String.Utils
import Types
import GitRepo
import LocationLog
-import Data.String.Utils
+import Locations
import UUID
import List
@@ -24,8 +25,13 @@ remotesWithKey :: Key -> Annex [GitRepo]
remotesWithKey key = do
g <- gitAnnex
uuids <- liftIO $ keyLocations g key
- remotes <- remotesByCost
- reposByUUID remotes uuids
+ allremotes <- remotesByCost
+ remotes <- reposByUUID allremotes uuids
+ if (0 == length remotes)
+ then error $ "no configured git remotes have: " ++ (keyFile key) ++ "\n" ++
+ "It has been seen before in these repositories:\n" ++
+ prettyPrintUUIDs uuids
+ else return remotes
{- Cost Ordered list of remotes. -}
remotesByCost :: Annex [GitRepo]
diff --git a/TODO b/TODO
index ea3f87c11..40017c816 100644
--- a/TODO
+++ b/TODO
@@ -1,8 +1,6 @@
* bug when annexing files while in a subdir of a git repo
* bug when specifying absolute path to files when annexing
-* state monad
-
* query remotes for their annex.uuid settings and cache
* --push/--pull/--want/--drop
diff --git a/UUID.hs b/UUID.hs
index 5c9f9179e..af6003bfb 100644
--- a/UUID.hs
+++ b/UUID.hs
@@ -10,7 +10,8 @@ module UUID (
getUUID,
prepUUID,
genUUID,
- reposByUUID
+ reposByUUID,
+ prettyPrintUUIDs
) where
import Control.Monad.State
@@ -71,3 +72,10 @@ reposByUUID repos uuids = do
match r = do
u <- getUUID r
return $ isJust $ elemIndex u uuids
+
+{- Pretty-prints a list of UUIDs
+ - TODO: use lookup file to really show pretty names. -}
+prettyPrintUUIDs :: [UUID] -> String
+prettyPrintUUIDs uuids =
+ unwords $ map (\u -> "\tUUID "++u++"\n") uuids
+