New annex.largefiles setting, which configures which files git annex add and the assistant add to the annex.

I would have sort of liked to put this in .gitattributes, but it seems
it does not support multi-word attribute values. Also, making this a single
config setting makes it easy to only parse the expression once.

A natural next step would be to make the assistant `git add` files that
are not annex.largefiles. OTOH, I don't think `git annex add` should
`git add` such files, because git-annex command line tools are
not in the business of wrapping git command line tools.
This commit is contained in:
Joey Hess 2013-03-29 16:17:13 -04:00
parent dd6c3deccf
commit 67e817c6a1
8 changed files with 169 additions and 63 deletions

View file

@ -1,6 +1,6 @@
{- git-annex command
-
- Copyright 2010 Joey Hess <joey@kitenet.net>
- Copyright 2010, 2013 Joey Hess <joey@kitenet.net>
-
- Licensed under the GNU GPL version 3 or higher.
-}
@ -27,6 +27,7 @@ import Utility.Touch
import Utility.FileMode
import Config
import Utility.InodeCache
import Annex.FileMatcher
def :: [Command]
def = [notBareRepo $ command "add" paramPaths seek SectionCommon
@ -37,10 +38,16 @@ def = [notBareRepo $ command "add" paramPaths seek SectionCommon
- In direct mode, it acts on any files that have changed. -}
seek :: [CommandSeek]
seek =
[ withFilesNotInGit start
, whenNotDirect $ withFilesUnlocked start
, whenDirect $ withFilesMaybeModified start
[ go withFilesNotInGit
, whenNotDirect $ go withFilesUnlocked
, whenDirect $ go withFilesMaybeModified
]
where
go a = withValue largeFilesMatcher $ \matcher ->
a $ \file -> ifM (checkFileMatcher matcher file)
( start file
, stop
)
{- 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