addurl in direct mode

This commit is contained in:
Joey Hess 2013-01-06 17:34:44 -04:00
parent cfc8c8a52b
commit 248090064d
3 changed files with 10 additions and 4 deletions

View file

@ -151,13 +151,14 @@ link file key hascontent = handle (undo file key) $ do
{- Note: Several other commands call this, and expect it to
- create the symlink and add it. -}
cleanup :: FilePath -> Key -> Bool -> CommandCleanup
cleanup file key hascontent = ifM isDirect
cleanup file key hascontent = ifM (isDirect <&&> pure hascontent)
( do
l <- calcGitLink file key
sha <- inRepo $ Git.HashObject.hashObject BlobObject l
Annex.Queue.addUpdateIndex =<<
inRepo (Git.UpdateIndex.stageSymlink file sha)
logStatus key InfoPresent
when hascontent $
logStatus key InfoPresent
return True
, do
_ <- link file key hascontent

View file

@ -22,9 +22,10 @@ import qualified Option
import Types.Key
import Types.KeySource
import Config
import Annex.Content.Direct
def :: [Command]
def = [notDirect $ notBareRepo $ withOptions [fileOption, pathdepthOption] $
def = [notBareRepo $ withOptions [fileOption, pathdepthOption] $
command "addurl" (paramRepeating paramUrl) seek "add urls to annex"]
fileOption :: Option
@ -79,6 +80,8 @@ download url file = do
case k of
Nothing -> stop
Just (key, _) -> do
whenM isDirect $
void $ addAssociatedFile key file
moveAnnex key tmp
setUrlPresent key url
next $ Command.Add.cleanup file key True
@ -90,6 +93,8 @@ nodownload url file = do
if exists
then do
let key = Backend.URL.fromUrl url size
whenM isDirect $
void $ addAssociatedFile key file
setUrlPresent key url
next $ Command.Add.cleanup file key False
else do

2
debian/changelog vendored
View file

@ -4,7 +4,7 @@ git-annex (3.20130105) UNRELEASED; urgency=low
* committer: Fix a file handle leak.
* assistant: Make expensive transfer scan work fully in direct mode.
* More commands work in direct mode repositories: find, whereis, move, copy,
drop, log, fsck, add.
drop, log, fsck, add, addurl.
* sync: No longer automatically adds files in direct mode.
* assistant: Detect when system is not configured with a user name,
and set environment to prevent git from failing.