diff options
Diffstat (limited to 'Command')
-rw-r--r-- | Command/Drop.hs | 2 | ||||
-rw-r--r-- | Command/Move.hs | 2 | ||||
-rw-r--r-- | Command/NumCopies.hs | 56 |
3 files changed, 58 insertions, 2 deletions
diff --git a/Command/Drop.hs b/Command/Drop.hs index f5c76f1ce..97208eff7 100644 --- a/Command/Drop.hs +++ b/Command/Drop.hs @@ -139,7 +139,7 @@ notEnoughCopies key need have skip bad = do return False where unsafe = showNote "unsafe" - hint = showLongNote "(Use --force to override this check, or adjust annex.numcopies.)" + hint = showLongNote "(Use --force to override this check, or adjust numcopies.)" {- In auto mode, only runs the action if there are enough - copies on other semitrusted repositories. diff --git a/Command/Move.hs b/Command/Move.hs index b79e4c929..b7b567812 100644 --- a/Command/Move.hs +++ b/Command/Move.hs @@ -64,7 +64,7 @@ showMoveAction False key Nothing = showStart "copy" (key2file key) - If the remote already has the content, it is still removed from - the current repository. - - - Note that unlike drop, this does not honor annex.numcopies. + - Note that unlike drop, this does not honor numcopies. - A file's content can be moved even if there are insufficient copies to - allow it to be dropped. -} diff --git a/Command/NumCopies.hs b/Command/NumCopies.hs new file mode 100644 index 000000000..804faff58 --- /dev/null +++ b/Command/NumCopies.hs @@ -0,0 +1,56 @@ +{- git-annex command + - + - Copyright 2014 Joey Hess <joey@kitenet.net> + - + - Licensed under the GNU GPL version 3 or higher. + -} + +module Command.NumCopies where + +import Common.Annex +import qualified Annex +import Command +import Logs.NumCopies +import Types.Messages + +def :: [Command] +def = [command "numcopies" paramNumber seek + SectionSetup "configure desired number of copies"] + +seek :: CommandSeek +seek = withWords start + +start :: [String] -> CommandStart +start [] = startGet +start [s] = do + case readish s of + Nothing -> error $ "Bad number: " ++ s + Just n + | n > 0 -> startSet n + | n == 0 -> ifM (Annex.getState Annex.force) + ( startSet n + , error "Setting numcopies to 0 is very unsafe. You will lose data! If you really want to do that, specify --force." + ) + | otherwise -> error "Number cannot be negative!" +start _ = error "Specify a single number." + +startGet :: CommandStart +startGet = next $ next $ do + Annex.setOutput QuietOutput + v <- getGlobalNumCopies + case v of + Just n -> liftIO $ putStrLn $ show n + Nothing -> do + liftIO $ putStrLn $ "global numcopies is not set" + old <- annexNumCopies <$> Annex.getGitConfig + case old of + Nothing -> liftIO $ putStrLn "(default is 1)" + Just n -> liftIO $ putStrLn $ "(deprecated git config annex.numcopies is set to " ++ show n ++ " locally)" + return True + +startSet :: Int -> CommandStart +startSet n = do + showStart "numcopies" (show n) + next $ next $ do + setGlobalNumCopies n + return True |