avoid double commits with inotify when direct mode file is created

This commit is contained in:
Joey Hess 2012-12-29 14:58:13 -04:00
parent e872c3f648
commit 8cc27b8afc
2 changed files with 7 additions and 3 deletions

View file

@ -69,7 +69,6 @@ watchThread = NamedThread "Watcher" $ do
errhook <- hook onErr
let hooks = mkWatchHooks
{ addHook = addhook
, modifyHook = addhook
, delHook = delhook
, addSymlinkHook = addsymlinkhook
, delDirHook = deldirhook
@ -143,10 +142,10 @@ onAddDirect file fs = do
case (v, fs) of
(Just key, Just filestatus) ->
ifM (liftAnnex $ changedFileStatus key filestatus)
( noChange
, do
( do
liftAnnex $ changedDirect key file
pendingAddChange file
, noChange
)
_ -> pendingAddChange file

View file

@ -50,8 +50,13 @@ watchDir dir ignored hooks = do
)
else maybe (runhook delHook Nothing) handleadd
=<< getstatus (eventPath evt)
{- Add hooks are run when a file is modified for
- compatability with INotify, which calls the add
- hook when a file is closed, and so tends to call
- both add and modify for file modifications. -}
when (hasflag eventFlagItemModified && not (hasflag eventFlagItemIsDir)) $ do
ms <- getstatus $ eventPath evt
maybe noop handleadd ms
runhook modifyHook ms
where
hasflag f = eventFlags evt .&. f /= 0