diff options
Diffstat (limited to 'Assistant')
-rw-r--r-- | Assistant/Threads/Watcher.hs | 16 | ||||
-rw-r--r-- | Assistant/Types/Changes.hs | 6 |
2 files changed, 13 insertions, 9 deletions
diff --git a/Assistant/Threads/Watcher.hs b/Assistant/Threads/Watcher.hs index 84193de20..c2ba90ebe 100644 --- a/Assistant/Threads/Watcher.hs +++ b/Assistant/Threads/Watcher.hs @@ -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 diff --git a/Assistant/Types/Changes.hs b/Assistant/Types/Changes.hs index 651085947..9729acfbd 100644 --- a/Assistant/Types/Changes.hs +++ b/Assistant/Types/Changes.hs @@ -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 |