assistant: Fix location log when adding new file in direct mode.

This commit is contained in:
Joey Hess 2013-02-05 13:41:48 -04:00
parent 25c47ae84f
commit b19c2e6122
3 changed files with 31 additions and 29 deletions

View file

@ -18,6 +18,7 @@ import Assistant.DaemonStatus
import Assistant.Threads.Watcher
import Assistant.TransferQueue
import Logs.Transfer
import Logs.Location
import qualified Annex.Queue
import qualified Git.Command
import qualified Git.HashObject
@ -204,15 +205,17 @@ handleAdds delayadd cs = returnWhen (null incomplete) $ do
liftAnnex showEndFail
return Nothing
done change file (Just key) = do
link <- liftAnnex $ ifM isDirect
( calcGitLink file key
, Command.Add.link file key True
)
liftAnnex $ whenM (pure DirWatcher.eventsCoalesce <||> isDirect) $ do
sha <- inRepo $
Git.HashObject.hashObject BlobObject link
stageSymlink file sha
showEndOk
liftAnnex $ do
logStatus key InfoPresent
link <- ifM isDirect
( calcGitLink file key
, Command.Add.link file key True
)
whenM (pure DirWatcher.eventsCoalesce <||> isDirect) $ do
sha <- inRepo $
Git.HashObject.hashObject BlobObject link
stageSymlink file sha
showEndOk
queueTransfers Next key (Just file) Upload
return $ Just change

View file

@ -142,8 +142,6 @@ link file key hascontent = handle (undo file key) $ do
liftIO $ createSymbolicLink l file
when hascontent $ do
logStatus key InfoPresent
-- touch the symlink to have the same mtime as the
-- file it points to
liftIO $ do
@ -155,21 +153,21 @@ 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 <&&> pure hascontent)
( do
l <- calcGitLink file key
sha <- inRepo $ Git.HashObject.hashObject BlobObject l
Annex.Queue.addUpdateIndex =<<
inRepo (Git.UpdateIndex.stageSymlink file sha)
when hascontent $
logStatus key InfoPresent
return True
, do
_ <- link file key hascontent
params <- ifM (Annex.getState Annex.force)
( return [Param "-f"]
, return []
)
Annex.Queue.addCommand "add" (params++[Param "--"]) [file]
return True
)
cleanup file key hascontent = do
when hascontent $
logStatus key InfoPresent
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)
, do
_ <- link file key hascontent
params <- ifM (Annex.getState Annex.force)
( return [Param "-f"]
, return []
)
Annex.Queue.addCommand "add" (params++[Param "--"]) [file]
)
return True

1
debian/changelog vendored
View file

@ -8,6 +8,7 @@ git-annex (3.20130125) UNRELEASED; urgency=low
of changed files by the assistant, while it still does data syncing
and other tasks.
* assistant: Ignore .DS_Store on OSX.
* assistant: Fix location log when adding new file in direct mode.
-- Joey Hess <joeyh@debian.org> Sat, 26 Jan 2013 15:48:40 +1100