summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2010-10-26 16:15:29 -0400
committerGravatar Joey Hess <joey@kitenet.net>2010-10-26 16:15:29 -0400
commit24ee4439d4783cde7102f4ffd857c521367ce16f (patch)
treee675a22a20a14590e0be153a48c7facac5cf8357
parentef26076a5a3df9b8740883e3f7b3b68585b47ad5 (diff)
use git command queue
-rw-r--r--Commands.hs20
-rw-r--r--Core.hs5
-rw-r--r--LocationLog.hs6
3 files changed, 16 insertions, 15 deletions
diff --git a/Commands.hs b/Commands.hs
index da4d840ae..6018ed822 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 4c7c9205e..27baba28e 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 9ec71ce23..d027c4b80 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