addurl: Refuse to overwrite any existing, non-annexed file.

This commit is contained in:
Joey Hess 2016-01-13 15:09:47 -04:00
parent b52cf5697b
commit 1d1cb16fe0
Failed to extract signature
3 changed files with 14 additions and 0 deletions

View file

@ -259,6 +259,7 @@ performQuvi relaxed pageurl videourl file = ifAnnexed file addurl geturl
#ifdef WITH_QUVI #ifdef WITH_QUVI
addUrlFileQuvi :: Bool -> URLString -> URLString -> FilePath -> Annex (Maybe Key) addUrlFileQuvi :: Bool -> URLString -> URLString -> FilePath -> Annex (Maybe Key)
addUrlFileQuvi relaxed quviurl videourl file = do addUrlFileQuvi relaxed quviurl videourl file = do
checkDoesNotExist file
let key = Backend.URL.fromUrl quviurl Nothing let key = Backend.URL.fromUrl quviurl Nothing
ifM (pure relaxed <||> Annex.getState Annex.fast) ifM (pure relaxed <||> Annex.getState Annex.fast)
( do ( do
@ -309,12 +310,19 @@ addUrlChecked relaxed url u checkexistssize key
addUrlFile :: Bool -> URLString -> Url.UrlInfo -> FilePath -> Annex (Maybe Key) addUrlFile :: Bool -> URLString -> Url.UrlInfo -> FilePath -> Annex (Maybe Key)
addUrlFile relaxed url urlinfo file = do addUrlFile relaxed url urlinfo file = do
checkDoesNotExist file
liftIO $ createDirectoryIfMissing True (parentDir file) liftIO $ createDirectoryIfMissing True (parentDir file)
ifM (Annex.getState Annex.fast <||> pure relaxed) ifM (Annex.getState Annex.fast <||> pure relaxed)
( nodownload url urlinfo file ( nodownload url urlinfo file
, downloadWeb url urlinfo file , downloadWeb url urlinfo file
) )
checkDoesNotExist :: FilePath -> Annex ()
checkDoesNotExist file = go =<< liftIO (catchMaybeIO $ getSymbolicLinkStatus file)
where
go Nothing = return ()
go (Just _) = error $ file ++ " already exists and is not annexed; not overwriting"
downloadWeb :: URLString -> Url.UrlInfo -> FilePath -> Annex (Maybe Key) downloadWeb :: URLString -> Url.UrlInfo -> FilePath -> Annex (Maybe Key)
downloadWeb url urlinfo file = do downloadWeb url urlinfo file = do
let dummykey = addSizeUrlKey urlinfo $ Backend.URL.fromUrl url Nothing let dummykey = addSizeUrlKey urlinfo $ Backend.URL.fromUrl url Nothing

1
debian/changelog vendored
View file

@ -35,6 +35,7 @@ git-annex (6.20151219) UNRELEASED; urgency=medium
modified the same as typechanged files. modified the same as typechanged files.
* addurl: Added --batch and --with-files options. * addurl: Added --batch and --with-files options.
* addurl: Support --json, particularly useful in --batch mode. * addurl: Support --json, particularly useful in --batch mode.
* addurl: Refuse to overwrite any existing, non-annexed file.
* Debian: Adjust build dependencies for webapp, DAV. Now available on * Debian: Adjust build dependencies for webapp, DAV. Now available on
mips, mipsel, but temporarily removed armel since build is failing mips, mipsel, but temporarily removed armel since build is failing
there. there.

View file

@ -25,3 +25,8 @@ git-annex version: 6.20160104+gitg0cf96be-1~ndall+1
"""] """]
[[!meta author=yoh]] [[!meta author=yoh]]
> I don't think that the re-download is the bug. The actual problem
> is that the file is present and not an annexed file, so git-annex addurl
> should avoid overwriting it, whatever its content. [[fixed|done]]
> --[[Joey]]