diff --git a/Commands.hs b/Commands.hs index da4d840ae1..6018ed8223 100644 --- a/Commands.hs +++ b/Commands.hs @@ -216,7 +216,7 @@ addCleanup file key = do liftIO $ renameFile file dest link <- calcGitLink file key liftIO $ createSymbolicLink link file - liftIO $ Git.run g ["add", file] + Annex.queue "add" [] file return True {- The unannex subcommand undoes an add. -} @@ -340,11 +340,10 @@ fixPerform file link = do liftIO $ createDirectoryIfMissing True (parentDir file) liftIO $ removeFile file liftIO $ createSymbolicLink link file - g <- Annex.gitRepo - liftIO $ Git.run g ["add", file] - return $ Just $ fixCleanup -fixCleanup :: Annex Bool -fixCleanup = do + return $ Just $ fixCleanup file +fixCleanup :: FilePath -> Annex Bool +fixCleanup file = do + Annex.queue "add" [] file return True {- Stores description for the repository. -} @@ -391,8 +390,7 @@ fromKeyPerform file key = do return $ Just $ fromKeyCleanup file fromKeyCleanup :: FilePath -> Annex Bool fromKeyCleanup file = do - g <- Annex.gitRepo - liftIO $ Git.run g ["add", file] + Annex.queue "add" [] file return True {- Move a file either --to or --from a repository. @@ -453,7 +451,8 @@ moveToCleanup remote key tmpfile = do -- Record that the key is present on the remote. g <- Annex.gitRepo remoteuuid <- getUUID remote - liftIO $ logChange g key remoteuuid ValuePresent + log <- liftIO $ logChange g key remoteuuid ValuePresent + Annex.queue "add" [] log -- Cleanup on the local side is the same as done for the -- drop subcommand. dropCleanup key @@ -492,7 +491,8 @@ moveFromCleanup remote key = do -- Record locally that the key is not on the remote. remoteuuid <- getUUID remote g <- Annex.gitRepo - liftIO $ logChange g key remoteuuid ValueMissing + log <- liftIO $ logChange g key remoteuuid ValueMissing + Annex.queue "add" [] log return True -- helpers diff --git a/Core.hs b/Core.hs index 4c7c9205e6..27baba28e6 100644 --- a/Core.hs +++ b/Core.hs @@ -39,8 +39,6 @@ shutdown = do liftIO $ putStrLn "Recording state in git..." liftIO $ GitQueue.run g q - liftIO $ Git.run g ["add", gitStateDir g] - -- clean up any files left in the temp directory, but leave -- the tmp directory itself let tmp = annexTmpLocation g @@ -106,7 +104,8 @@ logStatus :: Key -> LogStatus -> Annex () logStatus key status = do g <- Annex.gitRepo u <- getUUID g - liftIO $ logChange g key u status + log <- liftIO $ logChange g key u status + Annex.queue "add" [] log {- Runs an action, passing it a temporary filename to download, - and if the action succeeds, moves the temp file into diff --git a/LocationLog.hs b/LocationLog.hs index 9ec71ce232..d027c4b809 100644 --- a/LocationLog.hs +++ b/LocationLog.hs @@ -82,12 +82,14 @@ instance Read LogLine where undefined = ret $ LogLine (0) Undefined "" ret v = [(v, "")] -{- Log a change in the presence of a key's value in a repository. -} -logChange :: Git.Repo -> Key -> UUID -> LogStatus -> IO () +{- Log a change in the presence of a key's value in a repository, + - and returns the filename of the logfile. -} +logChange :: Git.Repo -> Key -> UUID -> LogStatus -> IO (FilePath) logChange repo key uuid status = do log <- logNow status uuid ls <- readLog logfile writeLog logfile (compactLog $ log:ls) + return logfile where logfile = logFile repo key