status: Include all special remotes in the list of repositories.
Special remotes do not always have a description listed in uuid.log, and such ones were not listed before.
This commit is contained in:
parent
1326bb8635
commit
c50a5fbeb4
5 changed files with 24 additions and 19 deletions
|
@ -102,7 +102,7 @@ supported_remote_types = stat "supported remote types" $
|
||||||
|
|
||||||
remote_list :: TrustLevel -> String -> Stat
|
remote_list :: TrustLevel -> String -> Stat
|
||||||
remote_list level desc = stat n $ lift $ do
|
remote_list level desc = stat n $ lift $ do
|
||||||
us <- uuidList
|
us <- M.keys <$> (M.union <$> uuidMap <*> remoteMap)
|
||||||
rs <- fst <$> trustPartition level us
|
rs <- fst <$> trustPartition level us
|
||||||
s <- prettyPrintUUIDs n rs
|
s <- prettyPrintUUIDs n rs
|
||||||
return $ if null s then "0" else show (length rs) ++ "\n" ++ init s
|
return $ if null s then "0" else show (length rs) ++ "\n" ++ init s
|
||||||
|
|
|
@ -20,20 +20,30 @@ import Types.TrustLevel
|
||||||
import qualified Annex.Branch
|
import qualified Annex.Branch
|
||||||
import qualified Annex
|
import qualified Annex
|
||||||
import Logs.UUIDBased
|
import Logs.UUIDBased
|
||||||
import Logs.UUID
|
|
||||||
|
|
||||||
{- Filename of trust.log. -}
|
{- Filename of trust.log. -}
|
||||||
trustLog :: FilePath
|
trustLog :: FilePath
|
||||||
trustLog = "trust.log"
|
trustLog = "trust.log"
|
||||||
|
|
||||||
{- Returns a list of UUIDs at the specified trust level. -}
|
{- Returns a list of UUIDs that the trustLog indicates have the
|
||||||
|
- specified trust level.
|
||||||
|
- Note that the list can be incomplete for SemiTrusted, since that's
|
||||||
|
- the default. -}
|
||||||
trustGet :: TrustLevel -> Annex [UUID]
|
trustGet :: TrustLevel -> Annex [UUID]
|
||||||
trustGet SemiTrusted = do -- special case; trustMap does not contain all these
|
|
||||||
others <- M.keys . M.filter (/= SemiTrusted) <$> trustMap
|
|
||||||
alluuids <- uuidList
|
|
||||||
return $ alluuids \\ others
|
|
||||||
trustGet level = M.keys . M.filter (== level) <$> trustMap
|
trustGet level = M.keys . M.filter (== level) <$> trustMap
|
||||||
|
|
||||||
|
{- Partitions a list of UUIDs to those matching a TrustLevel and not. -}
|
||||||
|
trustPartition :: TrustLevel -> [UUID] -> Annex ([UUID], [UUID])
|
||||||
|
trustPartition level ls
|
||||||
|
| level == SemiTrusted = do
|
||||||
|
t <- trustGet Trusted
|
||||||
|
u <- trustGet UnTrusted
|
||||||
|
let uncandidates = t ++ u
|
||||||
|
return $ partition (`notElem` uncandidates) ls
|
||||||
|
| otherwise = do
|
||||||
|
candidates <- trustGet level
|
||||||
|
return $ partition (`elem` candidates) ls
|
||||||
|
|
||||||
{- Read the trustLog into a map, overriding with any
|
{- Read the trustLog into a map, overriding with any
|
||||||
- values from forcetrust. The map is cached for speed. -}
|
- values from forcetrust. The map is cached for speed. -}
|
||||||
trustMap :: Annex TrustMap
|
trustMap :: Annex TrustMap
|
||||||
|
@ -72,9 +82,3 @@ trustSet uuid@(UUID _) level = do
|
||||||
showLog showTrust . changeLog ts uuid level . parseLog parseTrust
|
showLog showTrust . changeLog ts uuid level . parseLog parseTrust
|
||||||
Annex.changeState $ \s -> s { Annex.trustmap = Nothing }
|
Annex.changeState $ \s -> s { Annex.trustmap = Nothing }
|
||||||
trustSet NoUUID _ = error "unknown UUID; cannot modify trust level"
|
trustSet NoUUID _ = error "unknown UUID; cannot modify trust level"
|
||||||
|
|
||||||
{- Partitions a list of UUIDs to those matching a TrustLevel and not. -}
|
|
||||||
trustPartition :: TrustLevel -> [UUID] -> Annex ([UUID], [UUID])
|
|
||||||
trustPartition level ls = do
|
|
||||||
candidates <- trustGet level
|
|
||||||
return $ partition (`elem` candidates) ls
|
|
||||||
|
|
|
@ -16,8 +16,7 @@
|
||||||
module Logs.UUID (
|
module Logs.UUID (
|
||||||
describeUUID,
|
describeUUID,
|
||||||
recordUUID,
|
recordUUID,
|
||||||
uuidMap,
|
uuidMap
|
||||||
uuidList
|
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
|
@ -88,6 +87,3 @@ uuidMap = do
|
||||||
return $ M.insertWith' preferold u "" m
|
return $ M.insertWith' preferold u "" m
|
||||||
where
|
where
|
||||||
preferold = flip const
|
preferold = flip const
|
||||||
|
|
||||||
uuidList :: Annex [UUID]
|
|
||||||
uuidList = M.keys <$> uuidMap
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ module Remote (
|
||||||
hasKeyCheap,
|
hasKeyCheap,
|
||||||
|
|
||||||
remoteTypes,
|
remoteTypes,
|
||||||
|
remoteMap,
|
||||||
byName,
|
byName,
|
||||||
prettyPrintUUIDs,
|
prettyPrintUUIDs,
|
||||||
remotesWithUUID,
|
remotesWithUUID,
|
||||||
|
@ -83,6 +84,10 @@ genList = do
|
||||||
u <- getRepoUUID r
|
u <- getRepoUUID r
|
||||||
generate t r u (M.lookup u m)
|
generate t r u (M.lookup u m)
|
||||||
|
|
||||||
|
{- Map of UUIDs of Remotes and their names. -}
|
||||||
|
remoteMap :: Annex (M.Map UUID String)
|
||||||
|
remoteMap = M.fromList . map (\r -> (uuid r, name r)) <$> genList
|
||||||
|
|
||||||
{- Looks up a remote by name. (Or by UUID.) Only finds currently configured
|
{- Looks up a remote by name. (Or by UUID.) Only finds currently configured
|
||||||
- git remotes. -}
|
- git remotes. -}
|
||||||
byName :: String -> Annex (Remote Annex)
|
byName :: String -> Annex (Remote Annex)
|
||||||
|
@ -139,7 +144,6 @@ prettyPrintUUIDs desc uuids = do
|
||||||
| d == n = d
|
| d == n = d
|
||||||
| null d = n
|
| null d = n
|
||||||
| otherwise = n ++ " (" ++ d ++ ")"
|
| otherwise = n ++ " (" ++ d ++ ")"
|
||||||
remoteMap = M.fromList . map (\r -> (uuid r, name r)) <$> genList
|
|
||||||
findlog m u = M.findWithDefault "" u m
|
findlog m u = M.findWithDefault "" u m
|
||||||
prettify m hereu u
|
prettify m hereu u
|
||||||
| not (null d) = fromUUID u ++ " -- " ++ d
|
| not (null d) = fromUUID u ++ " -- " ++ d
|
||||||
|
|
1
debian/changelog
vendored
1
debian/changelog
vendored
|
@ -10,6 +10,7 @@ git-annex (3.20111112) UNRELEASED; urgency=low
|
||||||
in constant space.
|
in constant space.
|
||||||
* status: Now displays trusted, untrusted, and semitrusted repositories
|
* status: Now displays trusted, untrusted, and semitrusted repositories
|
||||||
separately.
|
separately.
|
||||||
|
* status: Include all special remotes in the list of repositories.
|
||||||
* status: Fix --json mode (only the repository lists are currently
|
* status: Fix --json mode (only the repository lists are currently
|
||||||
displayed)
|
displayed)
|
||||||
* status: --fast is back
|
* status: --fast is back
|
||||||
|
|
Loading…
Reference in a new issue