This commit is contained in:
Joey Hess 2010-10-13 23:18:58 -04:00
parent 64b5167b0f
commit 8ab54401b6
4 changed files with 19 additions and 10 deletions

View file

@ -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: " ++

View file

@ -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]

2
TODO
View file

@ -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

10
UUID.hs
View file

@ -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