addurl --fast: Verifies that the url can be downloaded (only getting its head), and records the size in the key.

This commit is contained in:
Joey Hess 2012-02-10 19:23:23 -04:00
parent 9030f68452
commit 17fed709c8
3 changed files with 14 additions and 4 deletions

View file

@ -24,5 +24,9 @@ backend = Backend {
fsckKey = Nothing
}
fromUrl :: String -> Key
fromUrl url = stubKey { keyName = url, keyBackendName = "URL" }
fromUrl :: String -> Maybe Integer -> Key
fromUrl url size = stubKey
{ keyName = url
, keyBackendName = "URL"
, keySize = size
}

View file

@ -15,6 +15,7 @@ import qualified Backend
import qualified Command.Add
import qualified Annex
import qualified Backend.URL
import qualified Utility.Url as Url
import Annex.Content
import Logs.Web
import qualified Option
@ -55,7 +56,7 @@ perform url file = ifAnnexed file addurl geturl
download :: String -> FilePath -> CommandPerform
download url file = do
showAction $ "downloading " ++ url ++ " "
let dummykey = Backend.URL.fromUrl url
let dummykey = Backend.URL.fromUrl url Nothing
tmp <- fromRepo $ gitAnnexTmpLocation dummykey
liftIO $ createDirectoryIfMissing True (parentDir tmp)
stopUnless (downloadUrl [url] tmp) $ do
@ -70,7 +71,10 @@ download url file = do
nodownload :: String -> FilePath -> CommandPerform
nodownload url file = do
let key = Backend.URL.fromUrl url
(exists, size) <- liftIO $ Url.exists url
unless exists $
error $ "unable to access url: " ++ url
let key = Backend.URL.fromUrl url size
setUrlPresent key url
next $ Command.Add.cleanup file key False

2
debian/changelog vendored
View file

@ -20,6 +20,8 @@ git-annex (3.20120124) UNRELEASED; urgency=low
* Fix teardown of stale cached ssh connections.
* When checking that an url has a key, verify that the Content-Length,
if available, matches the size of the key.
* addurl --fast: Verifies that the url can be downloaded (only getting
its head), and records the size in the key.
-- Joey Hess <joeyh@debian.org> Tue, 24 Jan 2012 16:21:55 -0400