assistant: Check small files into git directly.

This commit is contained in:
Joey Hess 2013-03-29 16:54:59 -04:00
parent 2cbaf0406d
commit 5771cfce02
3 changed files with 14 additions and 9 deletions

View file

@ -168,15 +168,19 @@ runHandler handler file filestatus = void $ do
liftAnnex $ Annex.Queue.flushWhenFull
recordChange change
checkAdd :: FileMatcher -> FilePath -> Assistant (Maybe Change)
checkAdd matcher file = ifM (liftAnnex $ checkFileMatcher matcher file)
{- Small files are added to git as-is, while large ones go into the annex. -}
add :: FileMatcher -> FilePath -> Assistant (Maybe Change)
add bigfilematcher file = ifM (liftAnnex $ checkFileMatcher bigfilematcher file)
( pendingAddChange file
, noChange
, do
liftAnnex $ Annex.Queue.addCommand "add"
[Params "--force --"] [file]
madeChange file AddFileChange
)
onAdd :: FileMatcher -> Handler
onAdd matcher file filestatus
| maybe False isRegularFile filestatus = checkAdd matcher file
| maybe False isRegularFile filestatus = add matcher file
| otherwise = noChange
{- In direct mode, add events are received for both new files, and
@ -192,9 +196,9 @@ onAddDirect matcher file fs = do
( noChange
, do
liftAnnex $ changedDirect key file
checkAdd matcher file
add matcher file
)
_ -> checkAdd matcher file
_ -> add matcher file
{- A symlink might be an arbitrary symlink, which is just added.
- Or, if it is a git-annex symlink, ensure it points to the content

View file

@ -14,11 +14,11 @@ import Utility.TSet
import Data.Time.Clock
import Control.Concurrent.STM
data ChangeInfo = AddChange Key | LinkChange (Maybe Key) | RmChange
data ChangeInfo = AddKeyChange Key | AddFileChange | LinkChange (Maybe Key) | RmChange
deriving (Show, Eq)
changeInfoKey :: ChangeInfo -> Maybe Key
changeInfoKey (AddChange k) = Just k
changeInfoKey (AddKeyChange k) = Just k
changeInfoKey (LinkChange (Just k)) = Just k
changeInfoKey _ = Nothing
@ -60,6 +60,6 @@ finishedChange :: Change -> Key -> Change
finishedChange c@(InProcessAddChange { keySource = ks }) k = Change
{ changeTime = changeTime c
, _changeFile = keyFilename ks
, changeInfo = AddChange k
, changeInfo = AddKeyChange k
}
finishedChange c _ = c

1
debian/changelog vendored
View file

@ -12,6 +12,7 @@ git-annex (4.20130324) UNRELEASED; urgency=low
such as csh.
* New annex.largefiles setting, which configures which files
`git annex add` and the assistant add to the annex.
* assistant: Check small files into git directly.
-- Joey Hess <joeyh@debian.org> Mon, 25 Mar 2013 10:21:46 -0400