summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-03-21 23:41:01 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-03-22 17:32:47 -0400
commit4eb51126819fe01a003688267f481c6d8014ef47 (patch)
tree40f88312d53da654b65a7ed25617e5bdbd6be03c
parent52b90e5d4c2a22415d48a8e572eab328dfcc4407 (diff)
rationalize getConfig
getConfig got a remote-specific config, and this confusing name caused it to be used a couple of places that only were interested in global configs. Rename to getRemoteConfig and make getConfig only get global configs. There are no behavior changes here, but remote.<name>.annex-web-options never actually worked (and per-remote web options is a very unlikely to be useful case so I didn't make it work), so fix the documentation for it.
-rw-r--r--Annex/Content.hs3
-rw-r--r--Command/Status.hs13
-rw-r--r--Config.hs20
-rw-r--r--Remote/Bup.hs4
-rw-r--r--Remote/Directory.hs2
-rw-r--r--Remote/Git.hs2
-rw-r--r--Remote/Helper/Hooks.hs2
-rw-r--r--Remote/Helper/Ssh.hs2
-rw-r--r--Remote/Hook.hs7
-rw-r--r--Remote/Rsync.hs4
-rw-r--r--doc/git-annex.mdwn16
11 files changed, 38 insertions, 37 deletions
diff --git a/Annex/Content.hs b/Annex/Content.hs
index 1794fb5d9..e0cfa7227 100644
--- a/Annex/Content.hs
+++ b/Annex/Content.hs
@@ -313,8 +313,7 @@ saveState oneshot = do
{- Downloads content from any of a list of urls. -}
downloadUrl :: [Url.URLString] -> FilePath -> Annex Bool
downloadUrl urls file = do
- g <- gitRepo
- o <- map Param . words <$> getConfig g "web-options" ""
+ o <- map Param . words <$> getConfig "annex.web-options" ""
liftIO $ anyM (\u -> Url.download u o file) urls
{- Copies a key's content, when present, to a temp file.
diff --git a/Command/Status.hs b/Command/Status.hs
index 000374871..aaf848905 100644
--- a/Command/Status.hs
+++ b/Command/Status.hs
@@ -172,14 +172,13 @@ bloom_info = stat "bloom filter size" $ json id $ do
return $ size ++ note
disk_size :: Stat
-disk_size = stat "available local disk space" $ json id $ lift go
+disk_size = stat "available local disk space" $ json id $ lift $
+ if Build.SysConfig.statfs_sanity_checked == Just True
+ then calcfree
+ <$> getDiskReserve False
+ <*> inRepo (getFileSystemStats . gitAnnexDir)
+ else return unknown
where
- go
- | Build.SysConfig.statfs_sanity_checked == Just True =
- calcfree
- <$> getDiskReserve False
- <*> inRepo (getFileSystemStats . gitAnnexDir)
- | otherwise = return unknown
calcfree reserve (Just (FileSystemStats { fsStatBytesAvailable = have })) =
roughSize storageUnits True $ nonneg $ have - reserve
calcfree _ _ = unknown
diff --git a/Config.hs b/Config.hs
index aecf77a2a..39fe3333b 100644
--- a/Config.hs
+++ b/Config.hs
@@ -25,11 +25,15 @@ setConfig k value = do
newg <- inRepo Git.Config.read
Annex.changeState $ \s -> s { Annex.repo = newg }
+{- Looks up a git config setting in git config. -}
+getConfig :: ConfigKey -> String -> Annex String
+getConfig key def = fromRepo $ Git.Config.get key def
+
{- Looks up a per-remote config setting in git config.
- Failing that, tries looking for a global config option. -}
-getConfig :: Git.Repo -> ConfigKey -> String -> Annex String
-getConfig r key def = do
- def' <- fromRepo $ Git.Config.get ("annex." ++ key) def
+getRemoteConfig :: Git.Repo -> ConfigKey -> String -> Annex String
+getRemoteConfig r key def = do
+ def' <- getConfig key def
fromRepo $ Git.Config.get (remoteConfig r key) def'
{- A per-remote config setting in git config. -}
@@ -41,11 +45,11 @@ remoteConfig r key = "remote." ++ fromMaybe "" (Git.remoteName r) ++ ".annex-" +
- is set and prints a number, that is used. -}
remoteCost :: Git.Repo -> Int -> Annex Int
remoteCost r def = do
- cmd <- getConfig r "cost-command" ""
+ cmd <- getRemoteConfig r "cost-command" ""
(fromMaybe def . readish) <$>
if not $ null cmd
then liftIO $ snd <$> pipeFrom "sh" ["-c", cmd]
- else getConfig r "cost" ""
+ else getRemoteConfig r "cost" ""
cheapRemoteCost :: Int
cheapRemoteCost = 100
@@ -71,7 +75,8 @@ prop_cost_sane = False `notElem`
{- Checks if a repo should be ignored. -}
repoNotIgnored :: Git.Repo -> Annex Bool
-repoNotIgnored r = not . fromMaybe False . Git.configTrue <$> getConfig r "ignore" ""
+repoNotIgnored r = not . fromMaybe False . Git.configTrue
+ <$> getRemoteConfig r "ignore" ""
{- If a value is specified, it is used; otherwise the default is looked up
- in git config. forcenumcopies overrides everything. -}
@@ -91,8 +96,7 @@ getTrustLevel r = fromRepo $ Git.Config.getMaybe $ remoteConfig r "trustlevel"
{- Gets annex.diskreserve setting. -}
getDiskReserve :: Bool -> Annex Integer
getDiskReserve sanitycheck = do
- g <- gitRepo
- r <- getConfig g "diskreserve" ""
+ r <- getConfig "diskreserve" ""
when sanitycheck $ check r
return $ fromMaybe megabyte $ readSize dataUnits r
where
diff --git a/Remote/Bup.hs b/Remote/Bup.hs
index 4ac91e945..54aff7505 100644
--- a/Remote/Bup.hs
+++ b/Remote/Bup.hs
@@ -35,7 +35,7 @@ remote = RemoteType {
gen :: Git.Repo -> UUID -> Maybe RemoteConfig -> Annex Remote
gen r u c = do
- buprepo <- getConfig r "buprepo" (error "missing buprepo")
+ buprepo <- getRemoteConfig r "buprepo" (error "missing buprepo")
cst <- remoteCost r (if bupLocal buprepo then semiCheapRemoteCost else expensiveRemoteCost)
bupr <- liftIO $ bup2GitRemote buprepo
(u', bupr') <- getBupUUID bupr u
@@ -99,7 +99,7 @@ pipeBup params inh outh = do
bupSplitParams :: Git.Repo -> BupRepo -> Key -> CommandParam -> Annex [CommandParam]
bupSplitParams r buprepo k src = do
- o <- getConfig r "bup-split-options" ""
+ o <- getRemoteConfig r "bup-split-options" ""
let os = map Param $ words o
showOutput -- make way for bup output
return $ bupParams "split" buprepo
diff --git a/Remote/Directory.hs b/Remote/Directory.hs
index ecbf511d6..3627d9a9a 100644
--- a/Remote/Directory.hs
+++ b/Remote/Directory.hs
@@ -33,7 +33,7 @@ remote = RemoteType {
gen :: Git.Repo -> UUID -> Maybe RemoteConfig -> Annex Remote
gen r u c = do
- dir <- getConfig r "directory" (error "missing directory")
+ dir <- getRemoteConfig r "directory" (error "missing directory")
cst <- remoteCost r cheapRemoteCost
let chunksize = chunkSize c
return $ encryptableRemote c
diff --git a/Remote/Git.hs b/Remote/Git.hs
index 3725edd3a..541b05099 100644
--- a/Remote/Git.hs
+++ b/Remote/Git.hs
@@ -300,7 +300,7 @@ rsyncParamsRemote r sending key file = do
rsyncParams :: Git.Repo -> Annex [CommandParam]
rsyncParams r = do
- o <- getConfig r "rsync-options" ""
+ o <- getRemoteConfig r "rsync-options" ""
return $ options ++ map Param (words o)
where
-- --inplace to resume partial files
diff --git a/Remote/Helper/Hooks.hs b/Remote/Helper/Hooks.hs
index ed329b914..2864a8ed5 100644
--- a/Remote/Helper/Hooks.hs
+++ b/Remote/Helper/Hooks.hs
@@ -84,7 +84,7 @@ runHooks r starthook stophook a = do
liftIO $ closeFd fd
lookupHook :: Remote -> String -> Annex (Maybe String)
-lookupHook r n = go =<< getConfig (repo r) hookname ""
+lookupHook r n = go =<< getRemoteConfig (repo r) hookname ""
where
go "" = return Nothing
go command = return $ Just command
diff --git a/Remote/Helper/Ssh.hs b/Remote/Helper/Ssh.hs
index c61d1b96f..4c5eef0e6 100644
--- a/Remote/Helper/Ssh.hs
+++ b/Remote/Helper/Ssh.hs
@@ -19,7 +19,7 @@ import Annex.Ssh
- passed command. -}
sshToRepo :: Git.Repo -> [CommandParam] -> Annex [CommandParam]
sshToRepo repo sshcmd = do
- opts <- map Param . words <$> getConfig repo "ssh-options" ""
+ opts <- map Param . words <$> getRemoteConfig repo "ssh-options" ""
params <- sshParams (Git.Url.hostuser repo, Git.Url.port repo) opts
return $ params ++ sshcmd
diff --git a/Remote/Hook.hs b/Remote/Hook.hs
index 1e5c27b91..1c87823ca 100644
--- a/Remote/Hook.hs
+++ b/Remote/Hook.hs
@@ -30,7 +30,7 @@ remote = RemoteType {
gen :: Git.Repo -> UUID -> Maybe RemoteConfig -> Annex Remote
gen r u c = do
- hooktype <- getConfig r "hooktype" (error "missing hooktype")
+ hooktype <- getRemoteConfig r "hooktype" (error "missing hooktype")
cst <- remoteCost r expensiveRemoteCost
return $ encryptableRemote c
(storeEncrypted hooktype)
@@ -74,15 +74,14 @@ hookEnv k f = Just $ fileenv f ++ keyenv
lookupHook :: String -> String -> Annex (Maybe String)
lookupHook hooktype hook =do
- g <- gitRepo
- command <- getConfig g hookname ""
+ command <- getConfig hookname ""
if null command
then do
warning $ "missing configuration for " ++ hookname
return Nothing
else return $ Just command
where
- hookname = hooktype ++ "-" ++ hook ++ "-hook"
+ hookname = "annex." ++ hooktype ++ "-" ++ hook ++ "-hook"
runHook :: String -> String -> Key -> Maybe FilePath -> Annex Bool -> Annex Bool
runHook hooktype hook k f a = maybe (return False) run =<< lookupHook hooktype hook
diff --git a/Remote/Rsync.hs b/Remote/Rsync.hs
index 03c9911d7..571cd8f5e 100644
--- a/Remote/Rsync.hs
+++ b/Remote/Rsync.hs
@@ -60,8 +60,8 @@ gen r u c = do
genRsyncOpts :: Git.Repo -> Annex RsyncOpts
genRsyncOpts r = do
- url <- getConfig r "rsyncurl" (error "missing rsyncurl")
- opts <- getConfig r "rsync-options" ""
+ url <- getRemoteConfig r "rsyncurl" (error "missing rsyncurl")
+ opts <- getRemoteConfig r "rsync-options" ""
return $ RsyncOpts url $ map Param $ filter safe $ words opts
where
safe o
diff --git a/doc/git-annex.mdwn b/doc/git-annex.mdwn
index dd94ccc0c..72301c071 100644
--- a/doc/git-annex.mdwn
+++ b/doc/git-annex.mdwn
@@ -696,26 +696,26 @@ Here are all the supported configuration settings.
to or from this remote. For example, to force ipv6, and limit
the bandwidth to 100Kbyte/s, set it to "-6 --bwlimit 100"
-* `remote.<name>.annex-web-options`
-
- Options to use when using wget or curl to download a file from the web.
- (wget is always used in preference to curl if available).
- For example, to force ipv4 only, set it to "-4"
-
* `remote.<name>.annex-bup-split-options`
Options to pass to bup split when storing content in this remote.
For example, to limit the bandwidth to 100Kbye/s, set it to "--bwlimit 100k"
(There is no corresponding option for bup join.)
-* `annex.ssh-options`, `annex.rsync-options`, `annex.web-options, `annex.bup-split-options`
+* `annex.ssh-options`, `annex.rsync-options`, `annex.bup-split-options`
Default ssh, rsync, wget/curl, and bup options to use if a remote does not
have specific options.
+* `annex.web-options`
+
+ Options to use when using wget or curl to download a file from the web.
+ (wget is always used in preference to curl if available).
+ For example, to force ipv4 only, set it to "-4"
+
* `remote.<name>.rsyncurl`
- Used by rsunc special remotes, this configures
+ Used by rsync special remotes, this configures
the location of the rsync repository to use. Normally this is automaticaly
set up by `git annex initremote`, but you can change it if needed.