rework annex-ignore handling
Only one place need to filter the list of remotes for ignored remotes: keyPossibilities. Make the full list available to everything else. This allows getting rid of the special case handing for --from and --to to make ignored remotes not be ignored with those options.
This commit is contained in:
parent
d78b9f7d54
commit
dd463a3100
11 changed files with 24 additions and 25 deletions
4
Annex.hs
4
Annex.hs
|
@ -26,7 +26,7 @@ import Control.Applicative hiding (empty)
|
|||
import qualified Git
|
||||
import Git.Queue
|
||||
import Types.Backend
|
||||
import Types.Remote
|
||||
import qualified Types.Remote
|
||||
import Types.Crypto
|
||||
import Types.BranchState
|
||||
import Types.TrustLevel
|
||||
|
@ -48,7 +48,7 @@ newtype Annex a = Annex { runAnnex :: StateT AnnexState IO a }
|
|||
data AnnexState = AnnexState
|
||||
{ repo :: Git.Repo
|
||||
, backends :: [Backend Annex]
|
||||
, remotes :: [Remote Annex]
|
||||
, remotes :: [Types.Remote.Remote Annex]
|
||||
, repoqueue :: Queue
|
||||
, output :: OutputType
|
||||
, force :: Bool
|
||||
|
|
14
Config.hs
14
Config.hs
|
@ -82,18 +82,10 @@ prop_cost_sane = False `notElem`
|
|||
{- Checks if a repo should be ignored, based either on annex-ignore
|
||||
- setting, or on command-line options. Allows command-line to override
|
||||
- annex-ignore. -}
|
||||
remoteNotIgnored :: Git.Repo -> Annex Bool
|
||||
remoteNotIgnored r = do
|
||||
repoNotIgnored :: Git.Repo -> Annex Bool
|
||||
repoNotIgnored r = do
|
||||
ignored <- getConfig r "ignore" "false"
|
||||
to <- match Annex.toremote
|
||||
from <- match Annex.fromremote
|
||||
if to || from
|
||||
then return True
|
||||
else return $ not $ Git.configTrue ignored
|
||||
where
|
||||
match a = do
|
||||
n <- Annex.getState a
|
||||
return $ n == Git.repoRemoteName r
|
||||
return $ not $ Git.configTrue ignored
|
||||
|
||||
{- If a value is specified, it is used; otherwise the default is looked up
|
||||
- in git config. forcenumcopies overrides everything. -}
|
||||
|
|
|
@ -16,7 +16,6 @@ module Remote (
|
|||
hasKeyCheap,
|
||||
|
||||
remoteTypes,
|
||||
genList,
|
||||
byName,
|
||||
prettyPrintUUIDs,
|
||||
remotesWithUUID,
|
||||
|
@ -29,7 +28,7 @@ module Remote (
|
|||
forceTrust
|
||||
) where
|
||||
|
||||
import Control.Monad (filterM)
|
||||
import Control.Monad.State (filterM)
|
||||
import Data.List
|
||||
import qualified Data.Map as M
|
||||
import Data.String.Utils
|
||||
|
@ -83,7 +82,6 @@ genList = do
|
|||
where
|
||||
process m t =
|
||||
enumerate t >>=
|
||||
filterM remoteNotIgnored >>=
|
||||
mapM (gen m t)
|
||||
gen m t r = do
|
||||
u <- getUUID r
|
||||
|
@ -184,7 +182,7 @@ keyPossibilities' withtrusted key = do
|
|||
let validtrusteduuids = validuuids `intersect` trusted
|
||||
|
||||
-- remotes that match uuids that have the key
|
||||
allremotes <- genList
|
||||
allremotes <- filterM (repoNotIgnored . repo) =<< genList
|
||||
let validremotes = remotesWithUUID allremotes validuuids
|
||||
|
||||
return (sort validremotes, validtrusteduuids)
|
||||
|
|
|
@ -66,7 +66,8 @@ gen r u c = do
|
|||
removeKey = remove,
|
||||
hasKey = checkPresent r bupr',
|
||||
hasKeyCheap = bupLocal buprepo,
|
||||
config = c
|
||||
config = c,
|
||||
repo = r
|
||||
}
|
||||
|
||||
bupSetup :: UUID -> RemoteConfig -> Annex RemoteConfig
|
||||
|
|
|
@ -57,7 +57,8 @@ gen r u c = do
|
|||
removeKey = remove dir,
|
||||
hasKey = checkPresent dir,
|
||||
hasKeyCheap = True,
|
||||
config = Nothing
|
||||
config = Nothing,
|
||||
repo = r
|
||||
}
|
||||
|
||||
directorySetup :: UUID -> RemoteConfig -> Annex RemoteConfig
|
||||
|
|
|
@ -71,7 +71,8 @@ gen r u _ = do
|
|||
removeKey = dropKey r',
|
||||
hasKey = inAnnex r',
|
||||
hasKeyCheap = cheap,
|
||||
config = Nothing
|
||||
config = Nothing,
|
||||
repo = r'
|
||||
}
|
||||
|
||||
{- Tries to read the config for a specified remote, updates state, and
|
||||
|
|
|
@ -58,7 +58,8 @@ gen r u c = do
|
|||
removeKey = remove hooktype,
|
||||
hasKey = checkPresent r hooktype,
|
||||
hasKeyCheap = False,
|
||||
config = Nothing
|
||||
config = Nothing,
|
||||
repo = r
|
||||
}
|
||||
|
||||
hookSetup :: UUID -> RemoteConfig -> Annex RemoteConfig
|
||||
|
|
|
@ -66,7 +66,8 @@ gen r u c = do
|
|||
removeKey = remove o,
|
||||
hasKey = checkPresent r o,
|
||||
hasKeyCheap = False,
|
||||
config = Nothing
|
||||
config = Nothing,
|
||||
repo = r
|
||||
}
|
||||
|
||||
genRsyncOpts :: Git.Repo -> Annex RsyncOpts
|
||||
|
|
|
@ -67,7 +67,8 @@ gen' r u c cst =
|
|||
removeKey = remove this,
|
||||
hasKey = checkPresent this,
|
||||
hasKeyCheap = False,
|
||||
config = c
|
||||
config = c,
|
||||
repo = r
|
||||
}
|
||||
|
||||
s3Setup :: UUID -> RemoteConfig -> Annex RemoteConfig
|
||||
|
|
|
@ -58,7 +58,8 @@ gen r _ _ =
|
|||
removeKey = dropKey,
|
||||
hasKey = checkKey,
|
||||
hasKeyCheap = False,
|
||||
config = Nothing
|
||||
config = Nothing,
|
||||
repo = r
|
||||
}
|
||||
|
||||
{- The urls for a key are stored in remote/web/hash/key.log
|
||||
|
|
|
@ -51,7 +51,9 @@ data Remote a = Remote {
|
|||
-- operation.
|
||||
hasKeyCheap :: Bool,
|
||||
-- a Remote can have a persistent configuration store
|
||||
config :: Maybe RemoteConfig
|
||||
config :: Maybe RemoteConfig,
|
||||
-- git configuration for the remote
|
||||
repo :: Git.Repo
|
||||
}
|
||||
|
||||
instance Show (Remote a) where
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue