Periodically flush git command queue, to avoid boating memory usage too much.

Since the queue is flushed in between subcommand actions being run,
there should be no issues with actions that expect to queue up some stuff
and have it run after they do other stuff. So I didn't have to audit for
such assumptions.
This commit is contained in:
Joey Hess 2011-04-07 13:59:31 -04:00
parent 77f45e4e45
commit bc51387e6d
14 changed files with 101 additions and 59 deletions

View file

@ -11,7 +11,7 @@ import Control.Monad.State (liftIO)
import System.Posix.Files
import Command
import qualified Annex
import qualified AnnexQueue
import qualified Backend
import LocationLog
import Types
@ -60,5 +60,5 @@ cleanup file key = do
let mtime = modificationTime s
liftIO $ touch file (TimeSpec mtime) False
Annex.queue "add" [Param "--"] file
AnnexQueue.add "add" [Param "--"] file
return True

View file

@ -12,7 +12,7 @@ import System.Posix.Files
import System.Directory
import Command
import qualified Annex
import qualified AnnexQueue
import Utility
import Content
import Messages
@ -44,5 +44,5 @@ perform file link = do
cleanup :: FilePath -> CommandCleanup
cleanup file = do
Annex.queue "add" [Param "--"] file
AnnexQueue.add "add" [Param "--"] file
return True

View file

@ -13,7 +13,7 @@ import System.Directory
import Control.Monad (unless)
import Command
import qualified Annex
import qualified AnnexQueue
import Utility
import qualified Backend
import Content
@ -46,5 +46,5 @@ perform file = do
cleanup :: FilePath -> CommandCleanup
cleanup file = do
Annex.queue "add" [Param "--"] file
AnnexQueue.add "add" [Param "--"] file
return True

View file

@ -12,6 +12,7 @@ import Control.Monad.State (liftIO)
import Command
import qualified Command.Drop
import qualified Annex
import qualified AnnexQueue
import LocationLog
import Types
import Content
@ -59,7 +60,7 @@ remoteHasKey remote key present = do
g <- Annex.gitRepo
let remoteuuid = Remote.uuid remote
logfile <- liftIO $ logChange g key remoteuuid status
Annex.queue "add" [Param "--"] logfile
AnnexQueue.add "add" [Param "--"] logfile
where
status = if present then ValuePresent else ValueMissing

View file

@ -11,6 +11,7 @@ import Control.Monad.State (liftIO)
import Command
import qualified Annex
import qualified AnnexQueue
import qualified GitRepo as Git
import qualified Command.Add
import qualified Command.Fix
@ -42,5 +43,5 @@ cleanup file = do
-- stage the symlink
g <- Annex.gitRepo
liftIO $ Git.run g "reset" [Params "-q --", File file]
Annex.queueRun
AnnexQueue.flush True
return True

View file

@ -13,6 +13,7 @@ import System.Directory
import Command
import qualified Annex
import qualified AnnexQueue
import Utility
import qualified Backend
import LocationLog
@ -68,6 +69,6 @@ cleanup file key = do
-- Commit staged changes at end to avoid confusing the
-- pre-commit hook if this file is later added back to
-- git as a normal, non-annexed file.
Annex.queue "commit" [Params "-a -m", Param "content removed from git annex"] "-a"
AnnexQueue.add "commit" [Params "-a -m", Param "content removed from git annex"] "-a"
return True