1791447cc8
A keyName could contain "/", though this is unlikely and certianly only ever could happen with WORM keys. The change to addunused to escape that is no problem at all. The change to VariantFile to escape it means that different versions of git-annex could resolve a merge conflict differently in this case, which is unfortunate. There would be different .variant files used, so the two resolutions would themselves merge together without additional conflicts, but the user would have to clean up the extra .variant files.
41 lines
1 KiB
Haskell
41 lines
1 KiB
Haskell
{- git-annex command
|
||
-
|
||
- Copyright 2012 Joey Hess <id@joeyh.name>
|
||
-
|
||
- Licensed under the GNU GPL version 3 or higher.
|
||
-}
|
||
|
||
module Command.AddUnused where
|
||
|
||
import Logs.Location
|
||
import Command
|
||
import Annex.Ingest
|
||
import Command.Unused (withUnusedMaps, UnusedMaps(..), startUnused)
|
||
|
||
cmd :: Command
|
||
cmd = notDirect $
|
||
command "addunused" SectionMaintenance
|
||
"add back unused files"
|
||
(paramRepeating paramNumRange) (withParams seek)
|
||
|
||
seek :: CmdParams -> CommandSeek
|
||
seek = withUnusedMaps start
|
||
|
||
start :: UnusedMaps -> Int -> CommandStart
|
||
start = startUnused "addunused" perform
|
||
(performOther "bad")
|
||
(performOther "tmp")
|
||
|
||
perform :: Key -> CommandPerform
|
||
perform key = next $ do
|
||
logStatus key InfoPresent
|
||
addLink file key Nothing
|
||
return True
|
||
where
|
||
file = "unused." ++ keyFile key
|
||
|
||
{- The content is not in the annex, but in another directory, and
|
||
- it seems better to error out, rather than moving bad/tmp content into
|
||
- the annex. -}
|
||
performOther :: String -> Key -> CommandPerform
|
||
performOther other _ = giveup $ "cannot addunused " ++ other ++ "content"
|