optimize: A new subcommand that either gets or drops file content as needed to work toward meeting the configured numcopies setting.
This is currently rather simplistic, though still useful. In the future, it could become smarter about what content is stored where, etc.
This commit is contained in:
parent
1ac6217c74
commit
949b3f69d0
9 changed files with 73 additions and 1 deletions
|
@ -34,7 +34,7 @@ command = [repoCommand "fsck" (paramOptional $ paramRepeating paramPath) seek
|
|||
"check for problems"]
|
||||
|
||||
seek :: [CommandSeek]
|
||||
seek = [withAttrFilesInGit "annex.numcopies" start]
|
||||
seek = [withNumCopies start]
|
||||
|
||||
start :: CommandStartAttrFile
|
||||
start (file, attr) = notBareRepo $ isAnnexed file $ \(key, backend) -> do
|
||||
|
|
35
Command/Optimize.hs
Normal file
35
Command/Optimize.hs
Normal file
|
@ -0,0 +1,35 @@
|
|||
{- git-annex command
|
||||
-
|
||||
- Copyright 2011 Joey Hess <joey@kitenet.net>
|
||||
-
|
||||
- Licensed under the GNU GPL version 3 or higher.
|
||||
-}
|
||||
|
||||
module Command.Optimize where
|
||||
|
||||
import Command
|
||||
import Utility
|
||||
import LocationLog
|
||||
import Trust
|
||||
import Config
|
||||
import qualified Command.Get
|
||||
import qualified Command.Drop
|
||||
|
||||
command :: [Command]
|
||||
command = [repoCommand "optimize" (paramOptional $ paramRepeating paramPath) seek
|
||||
"get or drop content to best use available space"]
|
||||
|
||||
seek :: [CommandSeek]
|
||||
seek = [withNumCopies start]
|
||||
|
||||
start :: CommandStartAttrFile
|
||||
start p@(file, attr) = notBareRepo $ isAnnexed file $ \(key, _) -> do
|
||||
needed <- getNumCopies numcopies
|
||||
(_, safelocations) <- trustPartition UnTrusted =<< keyLocations key
|
||||
dispatch needed (length safelocations)
|
||||
where
|
||||
dispatch needed present
|
||||
| present < needed = Command.Get.start file
|
||||
| present > needed = Command.Drop.start p
|
||||
| otherwise = stop
|
||||
numcopies = readMaybe attr :: Maybe Int
|
Loading…
Add table
Add a link
Reference in a new issue