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 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

View file

@ -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

View file

@ -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

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.
* 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

View file

@ -801,7 +801,10 @@ Here are all the supported configuration settings.
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:

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
[[!meta author=yoh]]
> [[done]] --[[Joey]]