type based git config handling
Now there's a Config type, that's extracted from the git config at startup. Note that laziness means that individual config values are only looked up and parsed on demand, and so we get implicit memoization for all of them. So this is not only prettier and more type safe, it optimises several places that didn't have explicit memoization before. As well as getting rid of the ugly explicit memoization code. Not yet done for annex.<remote>.* configuration settings.
This commit is contained in:
parent
b62753c475
commit
7f7c31df1c
23 changed files with 151 additions and 103 deletions
|
@ -35,7 +35,6 @@ import System.IO.Unsafe (unsafeInterleaveIO)
|
|||
import Common.Annex
|
||||
import Logs.Location
|
||||
import qualified Git
|
||||
import qualified Git.Config
|
||||
import qualified Annex
|
||||
import qualified Annex.Queue
|
||||
import qualified Annex.Branch
|
||||
|
@ -188,7 +187,7 @@ withTmp key action = do
|
|||
- in a destination (or the annex) printing a warning if not. -}
|
||||
checkDiskSpace :: Maybe FilePath -> Key -> Integer -> Annex Bool
|
||||
checkDiskSpace destination key alreadythere = do
|
||||
reserve <- getDiskReserve
|
||||
reserve <- annexDiskReserve <$> Annex.getConfig
|
||||
free <- liftIO . getDiskFree =<< dir
|
||||
force <- Annex.getState Annex.force
|
||||
case (free, keySize key) of
|
||||
|
@ -396,11 +395,8 @@ saveState :: Bool -> Annex ()
|
|||
saveState nocommit = doSideAction $ do
|
||||
Annex.Queue.flush
|
||||
unless nocommit $
|
||||
whenM alwayscommit $
|
||||
whenM (annexAlwaysCommit <$> Annex.getConfig) $
|
||||
Annex.Branch.commit "update"
|
||||
where
|
||||
alwayscommit = fromMaybe True . Git.Config.isTrue
|
||||
<$> getConfig (annexConfig "alwayscommit") ""
|
||||
|
||||
{- Downloads content from any of a list of urls. -}
|
||||
downloadUrl :: [Url.URLString] -> FilePath -> Annex Bool
|
||||
|
|
|
@ -17,7 +17,6 @@ import Common.Annex
|
|||
import Annex hiding (new)
|
||||
import qualified Git.Queue
|
||||
import qualified Git.UpdateIndex
|
||||
import Config
|
||||
|
||||
{- Adds a git command to the queue. -}
|
||||
addCommand :: String -> [CommandParam] -> [FilePath] -> Annex ()
|
||||
|
@ -55,11 +54,9 @@ get = maybe new return =<< getState repoqueue
|
|||
|
||||
new :: Annex Git.Queue.Queue
|
||||
new = do
|
||||
q <- Git.Queue.new <$> queuesize
|
||||
q <- Git.Queue.new . annexQueueSize <$> getConfig
|
||||
store q
|
||||
return q
|
||||
where
|
||||
queuesize = readish <$> getConfig (annexConfig "queuesize") ""
|
||||
|
||||
store :: Git.Queue.Queue -> Annex ()
|
||||
store q = changeState $ \s -> s { repoqueue = Just q }
|
||||
|
|
|
@ -18,9 +18,8 @@ import Common.Annex
|
|||
import Annex.LockPool
|
||||
import Annex.Perms
|
||||
#ifndef WITH_OLD_SSH
|
||||
import qualified Git.Config
|
||||
import Config
|
||||
import qualified Build.SysConfig as SysConfig
|
||||
import qualified Annex
|
||||
#endif
|
||||
|
||||
{- Generates parameters to ssh to a given host (or user@host) on a given
|
||||
|
@ -60,8 +59,7 @@ sshInfo (host, port) = ifM caching
|
|||
caching = return False
|
||||
#else
|
||||
caching = fromMaybe SysConfig.sshconnectioncaching
|
||||
. Git.Config.isTrue
|
||||
<$> getConfig (annexConfig "sshcaching") ""
|
||||
. annexSshCaching <$> Annex.getConfig
|
||||
#endif
|
||||
|
||||
cacheParams :: FilePath -> [CommandParam]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue