Avoid repeated location log commits when a remote is receiving files.
Done by adding a oneshot mode, in which location log changes are written to the journal, but not committed. Taking advantage of git-annex's existing ability to recover in this situation. This is used by git-annex-shell and other places where changes are made to a remote's location log.
This commit is contained in:
parent
303666965a
commit
b81d662cbf
9 changed files with 28 additions and 17 deletions
12
CmdLine.hs
12
CmdLine.hs
|
@ -29,8 +29,8 @@ type Params = [String]
|
|||
type Flags = [Annex ()]
|
||||
|
||||
{- Runs the passed command line. -}
|
||||
dispatch :: Params -> [Command] -> [Option] -> String -> IO Git.Repo -> IO ()
|
||||
dispatch args cmds commonoptions header getgitrepo = do
|
||||
dispatch :: Bool -> Params -> [Command] -> [Option] -> String -> IO Git.Repo -> IO ()
|
||||
dispatch oneshot args cmds commonoptions header getgitrepo = do
|
||||
setupConsole
|
||||
r <- E.try getgitrepo :: IO (Either E.SomeException Git.Repo)
|
||||
case r of
|
||||
|
@ -40,7 +40,7 @@ dispatch args cmds commonoptions header getgitrepo = do
|
|||
(actions, state') <- Annex.run state $ do
|
||||
sequence_ flags
|
||||
prepCommand cmd params
|
||||
tryRun state' cmd $ [startup] ++ actions ++ [shutdown]
|
||||
tryRun state' cmd $ [startup] ++ actions ++ [shutdown oneshot]
|
||||
where
|
||||
(flags, cmd, params) = parseCmd args cmds commonoptions header
|
||||
|
||||
|
@ -89,9 +89,9 @@ startup :: Annex Bool
|
|||
startup = return True
|
||||
|
||||
{- Cleanup actions. -}
|
||||
shutdown :: Annex Bool
|
||||
shutdown = do
|
||||
saveState
|
||||
shutdown :: Bool -> Annex Bool
|
||||
shutdown oneshot = do
|
||||
saveState oneshot
|
||||
liftIO Git.Command.reap -- zombies from long-running git processes
|
||||
sshCleanup -- ssh connection caching
|
||||
return True
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue