d266a41f8d
Ignore annex.numcopies set to 0 in gitattributes or git config, or by git-annex numcopies or by --numcopies, since that configuration would make git-annex easily lose data. Same for mincopies. This is a continuation of the work to make data only be able to be lost when --force is used. It earlier led to the --trust option being disabled, and similar reasoning applies here. Most numcopies configs had docs that strongly discouraged setting it to 0 anyway. And I can't imagine a use case for setting to 0. Not that there might not be one, but it's just so far from the intended use case of git-annex, of managing and storing your data, that it does not seem like it makes sense to cater to such a hypothetical use case, where any git-annex drop can lose your data at any time. Using a smart constructor makes sure every place avoids 0. Note that this does mean that NumCopies is for the configured desired values, and not the actual existing number of copies, which of course can be 0. The name configuredNumCopies is used to make that clear. Sponsored-by: Brock Spratlen on Patreon
39 lines
1.1 KiB
Haskell
39 lines
1.1 KiB
Haskell
{- git-annex command
|
|
-
|
|
- Copyright 2014-2021 Joey Hess <id@joeyh.name>
|
|
-
|
|
- Licensed under the GNU AGPL version 3 or higher.
|
|
-}
|
|
|
|
module Command.MinCopies where
|
|
|
|
import Command
|
|
import Annex.NumCopies
|
|
import qualified Command.NumCopies
|
|
|
|
cmd :: Command
|
|
cmd = noMessages $ command "mincopies" SectionSetup
|
|
"configure minimum number of copies"
|
|
paramNumber (withParams seek)
|
|
|
|
seek :: CmdParams -> CommandSeek
|
|
seek = withWords (commandAction . Command.NumCopies.start' "mincopies" startGet startSet)
|
|
|
|
start :: [String] -> CommandStart
|
|
start = Command.NumCopies.start' "mincopies" startGet startSet
|
|
|
|
startGet :: CommandStart
|
|
startGet = startingCustomOutput (ActionItemOther Nothing) $ next $ do
|
|
v <- getGlobalMinCopies
|
|
case v of
|
|
Just n -> liftIO $ putStrLn $ show $ fromMinCopies n
|
|
Nothing -> liftIO $ putStrLn "global mincopies is not set"
|
|
return True
|
|
|
|
startSet :: Int -> CommandStart
|
|
startSet n = startingUsualMessages "mincopies" ai si $ do
|
|
setGlobalMinCopies $ configuredMinCopies n
|
|
next $ return True
|
|
where
|
|
ai = ActionItemOther (Just $ show n)
|
|
si = SeekInput [show n]
|