display "Recording state in git..." when staging the journal
A bit tricky to avoid printing it twice in a row when there are queued git commands to run and journal to stage. Added a generic way to run an action that may output multiple side messages, with only the first displayed.
This commit is contained in:
parent
e0b7012ccc
commit
76102c1c75
8 changed files with 72 additions and 27 deletions
|
@ -330,6 +330,7 @@ setCommitted = void $ do
|
|||
{- Stages the journal into the index. -}
|
||||
stageJournal :: Annex ()
|
||||
stageJournal = do
|
||||
showStoringStateAction
|
||||
fs <- getJournalFiles
|
||||
g <- gitRepo
|
||||
withIndex $ liftIO $ do
|
||||
|
|
|
@ -297,8 +297,8 @@ getKeysPresent = liftIO . traverse (2 :: Int) =<< fromRepo gitAnnexObjectDir
|
|||
- especially if performing a short-lived action.
|
||||
-}
|
||||
saveState :: Bool -> Annex ()
|
||||
saveState oneshot = do
|
||||
Annex.Queue.flush False
|
||||
saveState oneshot = doSideAction $ do
|
||||
Annex.Queue.flush
|
||||
unless oneshot $
|
||||
ifM alwayscommit
|
||||
( Annex.Branch.commit "update" , Annex.Branch.stage)
|
||||
|
|
|
@ -26,15 +26,14 @@ add command params files = do
|
|||
flushWhenFull :: Annex ()
|
||||
flushWhenFull = do
|
||||
q <- get
|
||||
when (Git.Queue.full q) $ flush False
|
||||
when (Git.Queue.full q) flush
|
||||
|
||||
{- Runs (and empties) the queue. -}
|
||||
flush :: Bool -> Annex ()
|
||||
flush silent = do
|
||||
flush :: Annex ()
|
||||
flush = do
|
||||
q <- get
|
||||
unless (0 == Git.Queue.size q) $ do
|
||||
unless silent $
|
||||
showSideAction "Recording state in git"
|
||||
showStoringStateAction
|
||||
q' <- inRepo $ Git.Queue.flush q
|
||||
store q'
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue