summaryrefslogtreecommitdiff
path: root/Assistant/Threads
diff options
context:
space:
mode:
Diffstat (limited to 'Assistant/Threads')
-rw-r--r--Assistant/Threads/SanityChecker.hs4
-rw-r--r--Assistant/Threads/Watcher.hs8
2 files changed, 8 insertions, 4 deletions
diff --git a/Assistant/Threads/SanityChecker.hs b/Assistant/Threads/SanityChecker.hs
index 906167ca8..a6166214a 100644
--- a/Assistant/Threads/SanityChecker.hs
+++ b/Assistant/Threads/SanityChecker.hs
@@ -19,6 +19,7 @@ import qualified Git.Config
import Utility.ThreadScheduler
import qualified Assistant.Threads.Watcher as Watcher
import Utility.LogFile
+import Config
import Data.Time.Clock.POSIX
@@ -105,7 +106,8 @@ dailyCheck = do
liftAnnex $ warning msg
void $ addAlert $ sanityCheckFixAlert msg
addsymlink file s = do
- Watcher.runHandler Watcher.onAddSymlink file s
+ isdirect <- liftAnnex isDirect
+ Watcher.runHandler (Watcher.onAddSymlink isdirect) file s
insanity $ "found unstaged symlink: " ++ file
hourlyCheck :: Assistant ()
diff --git a/Assistant/Threads/Watcher.hs b/Assistant/Threads/Watcher.hs
index 7e373e95a..4eac622f9 100644
--- a/Assistant/Threads/Watcher.hs
+++ b/Assistant/Threads/Watcher.hs
@@ -82,7 +82,7 @@ runWatcher = do
direct <- liftAnnex isDirect
addhook <- hook $ if direct then onAddDirect else onAdd
delhook <- hook onDel
- addsymlinkhook <- hook onAddSymlink
+ addsymlinkhook <- hook $ onAddSymlink direct
deldirhook <- hook onDelDir
errhook <- hook onErr
let hooks = mkWatchHooks
@@ -193,10 +193,12 @@ onAddDirect file fs = do
- Or, if it is a git-annex symlink, ensure it points to the content
- before adding it.
-}
-onAddSymlink :: Handler
-onAddSymlink file filestatus = go =<< liftAnnex (Backend.lookupFile file)
+onAddSymlink :: Bool -> Handler
+onAddSymlink isdirect file filestatus = go =<< liftAnnex (Backend.lookupFile file)
where
go (Just (key, _)) = do
+ when isdirect $
+ liftAnnex $ void $ addAssociatedFile key file
link <- liftAnnex $ calcGitLink file key
ifM ((==) (Just link) <$> liftIO (catchMaybeIO $ readSymbolicLink file))
( do