add: If annex.largefiles is set and does not match a file that's being added, the file will be checked into git rather than being added to the annex. Previously, git annex add skipped over such files; this new behavior is more useful in direct mode.

This commit is contained in:
Joey Hess 2015-04-08 16:14:23 -04:00
parent 279fa44cd0
commit 4da371af1e
3 changed files with 26 additions and 5 deletions

View file

@ -52,7 +52,7 @@ seek ps = do
matcher <- largeFilesMatcher
let go a = flip a ps $ \file -> ifM (checkFileMatcher matcher file <||> Annex.getState Annex.force)
( start file
, stop
, startSmall file
)
skipdotfiles <- not <$> Annex.getFlag (optionName includeDotFilesOption)
go $ withFilesNotInGit skipdotfiles
@ -61,6 +61,16 @@ seek ps = do
, go withFilesUnlocked
)
{- Pass file off to git-add. -}
startSmall :: FilePath -> CommandStart
startSmall file = do
showStart "add" file
showNote "non-large file; adding to git directly"
next $ do
params <- forceParams
Annex.Queue.addCommand "add" (params++[Param "--"]) [file]
next $ return True
{- The add subcommand annexes a file, generating a key for it using a
- backend, and then moving it into the annex directory and setting up
- the symlink pointing to its content. -}
@ -260,16 +270,19 @@ addLink :: FilePath -> Key -> Maybe InodeCache -> Annex ()
addLink file key mcache = ifM (coreSymlinks <$> Annex.getGitConfig)
( do
_ <- link file key mcache
params <- ifM (Annex.getState Annex.force)
( return [Param "-f"]
, return []
)
params <- forceParams
Annex.Queue.addCommand "add" (params++[Param "--"]) [file]
, do
l <- link file key mcache
addAnnexLink l file
)
forceParams :: Annex [CommandParam]
forceParams = ifM (Annex.getState Annex.force)
( return [Param "-f"]
, return []
)
cleanup :: FilePath -> Key -> Maybe InodeCache -> Bool -> CommandCleanup
cleanup file key mcache hascontent = do
ifM (isDirect <&&> pure hascontent)