addurl, importfeed: Changed to honor annex.largefiles settings, when the content of the url is downloaded. (Not when using --fast or --relaxed.)

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.
This commit is contained in:
Joey Hess 2015-12-02 15:12:33 -04:00
parent dc8099872a
commit f16e235983
Failed to extract signature
6 changed files with 41 additions and 21 deletions

View file

@ -73,18 +73,18 @@ seek o = allowConcurrentOutput $ do
startSmall :: FilePath -> CommandStart startSmall :: FilePath -> CommandStart
startSmall file = do startSmall file = do
showStart "add" file showStart "add" file
next $ performSmall file next $ next $ addSmall file
performSmall :: FilePath -> CommandPerform addSmall :: FilePath -> Annex Bool
performSmall file = do addSmall file = do
showNote "non-large file; adding content to git repository" showNote "non-large file; adding content to git repository"
performAdd file addFile file
performAdd :: FilePath -> CommandPerform addFile :: FilePath -> Annex Bool
performAdd file = do addFile file = do
ps <- forceParams ps <- forceParams
Annex.Queue.addCommand "add" (ps++[Param "--"]) [file] 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 {- 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 - backend, and then moving it into the annex directory and setting up
@ -101,7 +101,7 @@ start file = ifAnnexed file addpresent add
| otherwise -> do | otherwise -> do
showStart "add" file showStart "add" file
next $ if isSymbolicLink s next $ if isSymbolicLink s
then performAdd file then next $ addFile file
else perform file else perform file
addpresent key = ifM isDirect addpresent key = ifM isDirect
( do ( do

View file

@ -29,6 +29,7 @@ import Types.KeySource
import Types.UrlContents import Types.UrlContents
import Config import Config
import Annex.Content.Direct import Annex.Content.Direct
import Annex.FileMatcher
import Logs.Location import Logs.Location
import Utility.Metered import Utility.Metered
import qualified Annex.Transfer as Transfer import qualified Annex.Transfer as Transfer
@ -335,17 +336,28 @@ addSizeUrlKey :: Url.UrlInfo -> Key -> Key
addSizeUrlKey urlinfo key = key { keySize = Url.urlSize urlinfo } addSizeUrlKey urlinfo key = key { keySize = Url.urlSize urlinfo }
cleanup :: UUID -> URLString -> FilePath -> Key -> Maybe FilePath -> Annex () cleanup :: UUID -> URLString -> FilePath -> Key -> Maybe FilePath -> Annex ()
cleanup u url file key mtmp = do cleanup u url file key mtmp = case mtmp of
when (isJust mtmp) $ Nothing -> go
logStatus key InfoPresent Just tmp -> do
setUrlPresent u key url largematcher <- largeFilesMatcher
Command.Add.addLink file key Nothing ifM (checkFileMatcher largematcher file)
whenM isDirect $ do ( go
void $ addAssociatedFile key file , do
{- For moveAnnex to work in direct mode, the symlink liftIO $ renameFile tmp file
- must already exist, so flush the queue. -} void $ Command.Add.addSmall file
Annex.Queue.flush )
maybe noop (moveAnnex key) mtmp 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 :: URLString -> Url.UrlInfo -> FilePath -> Annex (Maybe Key)
nodownload url urlinfo file nodownload url urlinfo file

View file

@ -129,7 +129,7 @@ start largematcher mode (srcfile, destfile) =
else moveFile srcfile destfile else moveFile srcfile destfile
ifM (checkFileMatcher largematcher destfile) ifM (checkFileMatcher largematcher destfile)
( Command.Add.perform destfile ( Command.Add.perform destfile
, Command.Add.performSmall destfile , next $ Command.Add.addSmall destfile
) )
notoverwriting why = do notoverwriting why = do
warning $ "not overwriting existing " ++ destfile ++ " " ++ why warning $ "not overwriting existing " ++ destfile ++ " " ++ why

3
debian/changelog vendored
View file

@ -11,6 +11,9 @@ git-annex (5.20151117) UNRELEASED; urgency=medium
them. Instead, a mode such as 664 is used in this case. them. Instead, a mode such as 664 is used in this case.
* tahoe: Include tahoe capabilities in whereis display. * tahoe: Include tahoe capabilities in whereis display.
* import: Changed to honor annex.largefiles settings. * 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 -- Joey Hess <id@joeyh.name> Mon, 16 Nov 2015 16:49:34 -0400

View file

@ -801,7 +801,10 @@ Here are all the supported configuration settings.
annex.largefiles = largerthan=100kb and not (include=*.c or include=*.h) 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. It can be useful to temporarily override it via -c at the command line.
For example: For example:

View file

@ -2,3 +2,5 @@ ATM git annex addurl ignores annex.largefiles option so to automate annexificat
N.B. I do understand that use-case might be somewhat vague, let me know if I should expand reasoning N.B. I do understand that use-case might be somewhat vague, let me know if I should expand reasoning
[[!meta author=yoh]] [[!meta author=yoh]]
> [[done]] --[[Joey]]