summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-03-29 16:54:59 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-03-29 16:54:59 -0400
commit50227056b7ff75a43fc94a14f4cb744455d22a66 (patch)
tree9e8f2c220ddfab2adda43dd159af07cb987c3fa2
parenta92512318fa00f6bd2361216803e11e956b1d5ea (diff)
assistant: Check small files into git directly.
-rw-r--r--Assistant/Threads/Watcher.hs16
-rw-r--r--Assistant/Types/Changes.hs6
-rw-r--r--debian/changelog1
3 files changed, 14 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
diff --git a/debian/changelog b/debian/changelog
index 241fd4bde..815b39a6c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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