continued work on deferred addding
This commit is contained in:
parent
c27c751b34
commit
679ef4c858
1 changed files with 12 additions and 13 deletions
|
@ -91,18 +91,18 @@ handleAdds :: ThreadState -> ChangeChan -> [Change] -> IO ()
|
||||||
handleAdds st changechan cs
|
handleAdds st changechan cs
|
||||||
| null added = noop
|
| null added = noop
|
||||||
| otherwise = do
|
| otherwise = do
|
||||||
numadded <- length . filter id <$>
|
r <- forM added $ catchBoolIO . runThreadState st . add
|
||||||
runThreadState st (forM added add)
|
let numadded = length $ filter id r
|
||||||
waitforlinkchanges numadded
|
handleAdds st changechan =<< waitforlinkchanges [] numadded
|
||||||
where
|
where
|
||||||
added = filter isPendingAdd cs
|
added = map changeFile $ filter isPendingAdd cs
|
||||||
|
|
||||||
isPendingAdd (Change { changeType = PendingAddChange }) = True
|
isPendingAdd (Change { changeType = PendingAddChange }) = True
|
||||||
isPendingAdd _ = False
|
isPendingAdd _ = False
|
||||||
isLinkChange (Change { changeType = LinkChange }) = True
|
isLinkChange (Change { changeType = LinkChange }) = True
|
||||||
isLinkChange _ = False
|
isLinkChange _ = False
|
||||||
|
|
||||||
add (Change { changeFile = file }) = do
|
add file = do
|
||||||
showStart "add" file
|
showStart "add" file
|
||||||
handle file =<< Command.Add.ingest file
|
handle file =<< Command.Add.ingest file
|
||||||
|
|
||||||
|
@ -114,14 +114,13 @@ handleAdds st changechan cs
|
||||||
showEndOk
|
showEndOk
|
||||||
return True
|
return True
|
||||||
|
|
||||||
waitforlinkchanges 0 = noop
|
waitforlinkchanges c n
|
||||||
waitforlinkchanges n = do
|
| n < 1 = return $ concat c
|
||||||
c <- runChangeChan $ readTChan changechan
|
| otherwise = do
|
||||||
if (isLinkChange c)
|
(done, rest) <- partition isLinkChange
|
||||||
then waitforlinkchanges (n-1)
|
<$> getChanges changechan
|
||||||
else do
|
let n' = (n - length done)
|
||||||
handleAdds st changechan [c]
|
waitforlinkchanges (rest:c) n'
|
||||||
waitforlinkchanges n
|
|
||||||
|
|
||||||
commitStaged :: Annex ()
|
commitStaged :: Annex ()
|
||||||
commitStaged = do
|
commitStaged = do
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue