summaryrefslogtreecommitdiff
path: root/Config.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Config.hs')
-rw-r--r--Config.hs15
1 files changed, 11 insertions, 4 deletions
diff --git a/Config.hs b/Config.hs
index 66b8dc124..02cbb5e51 100644
--- a/Config.hs
+++ b/Config.hs
@@ -116,13 +116,20 @@ getDiskReserve = fromMaybe megabyte . readSize dataUnits
where
megabyte = 1000000
-{- Gets annex.direct setting. -}
+{- Gets annex.direct setting, cached for speed. -}
isDirect :: Annex Bool
-isDirect = fromMaybe False . Git.Config.isTrue <$>
- getConfig (annexConfig "direct") ""
+isDirect = maybe fromconfig return =<< Annex.getState Annex.direct
+ where
+ fromconfig = do
+ direct <- fromMaybe False . Git.Config.isTrue <$>
+ getConfig (annexConfig "direct") ""
+ Annex.changeState $ \s -> s { Annex.direct = Just direct }
+ return direct
setDirect :: Bool -> Annex ()
-setDirect b = setConfig (annexConfig "direct") (if b then "true" else "false")
+setDirect b = do
+ setConfig (annexConfig "direct") (if b then "true" else "false")
+ Annex.changeState $ \s -> s { Annex.direct = Just b }
{- Gets annex.httpheaders or annex.httpheaders-command setting,
- splitting it into lines. -}