importfeed just calls addurl functions, so inherits this from it.
Note that addurl still generates a temp file, and uses that key to download
the file. It just adds it to the work tree at the end when the file is small.
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
| otherwise -> do
showStart "add" file
next $ if isSymbolicLink s
- then performAdd file
+ then next $ addFile file
else perform file
addpresent key = ifM isDirect
( do
import Types.UrlContents
import Config
import Annex.Content.Direct
+import Annex.FileMatcher
import Logs.Location
import Utility.Metered
import qualified Annex.Transfer as Transfer
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
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
them. Instead, a mode such as 664 is used in this case.
* tahoe: Include tahoe capabilities in whereis display.
* import: Changed to honor annex.largefiles settings.
+ * addurl, importfeed: Changed to honor annex.largefiles settings,
+ when the content of the url is downloaded. (Not when using --fast or
+ --relaxed.)
-- Joey Hess <id@joeyh.name> Mon, 16 Nov 2015 16:49:34 -0400
annex.largefiles = largerthan=100kb and not (include=*.c or include=*.h)
- This setting is used by `git annex add`, `git annex import` and the assistant.
+ This setting is checked by `git annex add`, `git annex import` and the assistant.
+ It's also used by `git annex addurl` and `git annex importfeed` when
+ downloading files.
+
It can be useful to temporarily override it via -c at the command line.
For example:
N.B. I do understand that use-case might be somewhat vague, let me know if I should expand reasoning
[[!meta author=yoh]]
+
+> [[done]] --[[Joey]]