summaryrefslogtreecommitdiff
path: root/Command
diff options
context:
space:
mode:
Diffstat (limited to 'Command')
-rw-r--r--Command/Add.hs16
-rw-r--r--Command/AddUrl.hs34
-rw-r--r--Command/Import.hs2
3 files changed, 32 insertions, 20 deletions
diff --git a/Command/Add.hs b/Command/Add.hs
index 4ae97b6e3..27c11eab4 100644
--- a/Command/Add.hs
+++ b/Command/Add.hs
@@ -73,18 +73,18 @@ seek o = allowConcurrentOutput $ do
startSmall :: FilePath -> CommandStart
startSmall file = do
showStart "add" file
- next $ performSmall file
+ next $ next $ addSmall file
-performSmall :: FilePath -> CommandPerform
-performSmall file = do
+addSmall :: FilePath -> Annex Bool
+addSmall file = do
showNote "non-large file; adding content to git repository"
- performAdd file
+ addFile file
-performAdd :: FilePath -> CommandPerform
-performAdd file = do
+addFile :: FilePath -> Annex Bool
+addFile file = do
ps <- forceParams
Annex.Queue.addCommand "add" (ps++[Param "--"]) [file]
- next $ return True
+ 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
@@ -101,7 +101,7 @@ start file = ifAnnexed file addpresent add
| otherwise -> do
showStart "add" file
next $ if isSymbolicLink s
- then performAdd file
+ then next $ addFile file
else perform file
addpresent key = ifM isDirect
( do
diff --git a/Command/AddUrl.hs b/Command/AddUrl.hs
index 78313f538..af2e04a62 100644
--- a/Command/AddUrl.hs
+++ b/Command/AddUrl.hs
@@ -29,6 +29,7 @@ import Types.KeySource
import Types.UrlContents
import Config
import Annex.Content.Direct
+import Annex.FileMatcher
import Logs.Location
import Utility.Metered
import qualified Annex.Transfer as Transfer
@@ -335,17 +336,28 @@ addSizeUrlKey :: Url.UrlInfo -> Key -> Key
addSizeUrlKey urlinfo key = key { keySize = Url.urlSize urlinfo }
cleanup :: UUID -> URLString -> FilePath -> Key -> Maybe FilePath -> Annex ()
-cleanup u url file key mtmp = do
- when (isJust mtmp) $
- logStatus key InfoPresent
- setUrlPresent u key url
- Command.Add.addLink file key Nothing
- whenM isDirect $ do
- void $ addAssociatedFile key file
- {- For moveAnnex to work in direct mode, the symlink
- - must already exist, so flush the queue. -}
- Annex.Queue.flush
- maybe noop (moveAnnex key) mtmp
+cleanup u url file key mtmp = case mtmp of
+ Nothing -> go
+ Just tmp -> do
+ largematcher <- largeFilesMatcher
+ ifM (checkFileMatcher largematcher file)
+ ( go
+ , do
+ liftIO $ renameFile tmp file
+ void $ Command.Add.addSmall file
+ )
+ where
+ go = do
+ when (isJust mtmp) $
+ logStatus key InfoPresent
+ setUrlPresent u key url
+ Command.Add.addLink file key Nothing
+ whenM isDirect $ do
+ void $ addAssociatedFile key file
+ {- For moveAnnex to work in direct mode, the symlink
+ - must already exist, so flush the queue. -}
+ Annex.Queue.flush
+ maybe noop (moveAnnex key) mtmp
nodownload :: URLString -> Url.UrlInfo -> FilePath -> Annex (Maybe Key)
nodownload url urlinfo file
diff --git a/Command/Import.hs b/Command/Import.hs
index 3887ea57b..7e8ce3b7a 100644
--- a/Command/Import.hs
+++ b/Command/Import.hs
@@ -129,7 +129,7 @@ start largematcher mode (srcfile, destfile) =
else moveFile srcfile destfile
ifM (checkFileMatcher largematcher destfile)
( Command.Add.perform destfile
- , Command.Add.performSmall destfile
+ , next $ Command.Add.addSmall destfile
)
notoverwriting why = do
warning $ "not overwriting existing " ++ destfile ++ " " ++ why