summaryrefslogtreecommitdiff
path: root/Annex/Queue.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-11-05 18:21:48 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-11-05 18:21:48 -0400
commita2c9cbbdc4047b799321ec388a94d4f96951a6f2 (patch)
tree5dc73f5fca4209147b66cbb3b5d471b278e5ced4 /Annex/Queue.hs
parente0d5901349c15b3eeace319cbe8854e655a602d6 (diff)
merge git command queue when joining with concurrent thread
Diffstat (limited to 'Annex/Queue.hs')
-rw-r--r--Annex/Queue.hs14
1 files changed, 13 insertions, 1 deletions
diff --git a/Annex/Queue.hs b/Annex/Queue.hs
index 47837e2d9..136e36093 100644
--- a/Annex/Queue.hs
+++ b/Annex/Queue.hs
@@ -5,12 +5,15 @@
- Licensed under the GNU GPL version 3 or higher.
-}
+{-# LANGUAGE BangPatterns #-}
+
module Annex.Queue (
addCommand,
addUpdateIndex,
flush,
flushWhenFull,
- size
+ size,
+ mergeFrom,
) where
import Common.Annex
@@ -60,3 +63,12 @@ new = do
store :: Git.Queue.Queue -> Annex ()
store q = changeState $ \s -> s { repoqueue = Just q }
+
+mergeFrom :: AnnexState -> Annex ()
+mergeFrom st = case repoqueue st of
+ Nothing -> noop
+ Just newq -> do
+ q <- get
+ let !q' = Git.Queue.merge q newq
+ store q'
+ flushWhenFull