annex.startupscan can be set to false to disable the assistant's startup scan.
This commit is contained in:
parent
7dab73db84
commit
a3fe8270ca
11 changed files with 46 additions and 28 deletions
|
@ -39,7 +39,7 @@ mergeThread = namedThread "Merger" $ do
|
|||
, modifyHook = changehook
|
||||
, errHook = errhook
|
||||
}
|
||||
void $ liftIO $ watchDir dir (const False) hooks id
|
||||
void $ liftIO $ watchDir dir (const False) True hooks id
|
||||
debug ["watching", dir]
|
||||
|
||||
type Handler = FilePath -> Assistant ()
|
||||
|
|
|
@ -35,7 +35,7 @@ transferWatcherThread = namedThread "TransferWatcher" $ do
|
|||
, modifyHook = modifyhook
|
||||
, errHook = errhook
|
||||
}
|
||||
void $ liftIO $ watchDir dir (const False) hooks id
|
||||
void $ liftIO $ watchDir dir (const False) True hooks id
|
||||
debug ["watching for transfers"]
|
||||
|
||||
type Handler = FilePath -> Assistant ()
|
||||
|
|
|
@ -50,8 +50,9 @@ upgradeWatcherThread urlrenderer = namedThread "UpgradeWatcher" $ do
|
|||
let dir = parentDir flagfile
|
||||
let depth = length (splitPath dir) + 1
|
||||
let nosubdirs f = length (splitPath f) == depth
|
||||
void $ liftIO $ watchDir dir nosubdirs hooks (startup mvar)
|
||||
void $ liftIO $ watchDir dir nosubdirs False hooks (startup mvar)
|
||||
-- Ignore bogus events generated during the startup scan.
|
||||
-- We ask the watcher to not generate them, but just to be safe..
|
||||
startup mvar scanner = do
|
||||
r <- scanner
|
||||
void $ swapMVar mvar Started
|
||||
|
|
|
@ -102,7 +102,8 @@ runWatcher = do
|
|||
, delDirHook = deldirhook
|
||||
, errHook = errhook
|
||||
}
|
||||
handle <- liftIO $ watchDir "." ignored hooks startup
|
||||
scanevents <- liftAnnex $ annexStartupScan <$> Annex.getGitConfig
|
||||
handle <- liftIO $ watchDir "." ignored scanevents hooks startup
|
||||
debug [ "watching", "."]
|
||||
|
||||
{- Let the DirWatcher thread run until signalled to pause it,
|
||||
|
|
|
@ -51,6 +51,7 @@ data GitConfig = GitConfig
|
|||
, annexSecureEraseCommand :: Maybe String
|
||||
, annexGenMetaData :: Bool
|
||||
, annexListen :: Maybe String
|
||||
, annexStartupScan :: Bool
|
||||
, coreSymlinks :: Bool
|
||||
, gcryptId :: Maybe String
|
||||
}
|
||||
|
@ -85,6 +86,7 @@ extractGitConfig r = GitConfig
|
|||
, annexSecureEraseCommand = getmaybe (annex "secure-erase-command")
|
||||
, annexGenMetaData = getbool (annex "genmetadata") False
|
||||
, annexListen = getmaybe (annex "listen")
|
||||
, annexStartupScan = getbool (annex "startupscan") True
|
||||
, coreSymlinks = getbool "core.symlinks" True
|
||||
, gcryptId = getmaybe "core.gcrypt-id"
|
||||
}
|
||||
|
|
|
@ -104,33 +104,33 @@ modifyTracked = undefined
|
|||
- to shutdown later. -}
|
||||
#if WITH_INOTIFY
|
||||
type DirWatcherHandle = INotify.INotify
|
||||
watchDir :: FilePath -> Pruner -> WatchHooks -> (IO () -> IO ()) -> IO DirWatcherHandle
|
||||
watchDir dir prune hooks runstartup = do
|
||||
watchDir :: FilePath -> Pruner -> Bool -> WatchHooks -> (IO () -> IO ()) -> IO DirWatcherHandle
|
||||
watchDir dir prune scanevents hooks runstartup = do
|
||||
i <- INotify.initINotify
|
||||
runstartup $ INotify.watchDir i dir prune hooks
|
||||
runstartup $ INotify.watchDir i dir prune scanevents hooks
|
||||
return i
|
||||
#else
|
||||
#if WITH_KQUEUE
|
||||
type DirWatcherHandle = ThreadId
|
||||
watchDir :: FilePath -> Pruner -> WatchHooks -> (IO Kqueue.Kqueue -> IO Kqueue.Kqueue) -> IO DirWatcherHandle
|
||||
watchDir dir prune hooks runstartup = do
|
||||
watchDir :: FilePath -> Pruner -> Bool -> WatchHooks -> (IO Kqueue.Kqueue -> IO Kqueue.Kqueue) -> IO DirWatcherHandle
|
||||
watchDir dir prune _scanevents hooks runstartup = do
|
||||
kq <- runstartup $ Kqueue.initKqueue dir prune
|
||||
forkIO $ Kqueue.runHooks kq hooks
|
||||
#else
|
||||
#if WITH_FSEVENTS
|
||||
type DirWatcherHandle = FSEvents.EventStream
|
||||
watchDir :: FilePath -> Pruner -> WatchHooks -> (IO FSEvents.EventStream -> IO FSEvents.EventStream) -> IO DirWatcherHandle
|
||||
watchDir dir prune hooks runstartup =
|
||||
runstartup $ FSEvents.watchDir dir prune hooks
|
||||
watchDir :: FilePath -> Pruner -> Bool -> WatchHooks -> (IO FSEvents.EventStream -> IO FSEvents.EventStream) -> IO DirWatcherHandle
|
||||
watchDir dir prune scanevents hooks runstartup =
|
||||
runstartup $ FSEvents.watchDir dir prune scanevents hooks
|
||||
#else
|
||||
#if WITH_WIN32NOTIFY
|
||||
type DirWatcherHandle = Win32Notify.WatchManager
|
||||
watchDir :: FilePath -> Pruner -> WatchHooks -> (IO Win32Notify.WatchManager -> IO Win32Notify.WatchManager) -> IO DirWatcherHandle
|
||||
watchDir dir prune hooks runstartup =
|
||||
runstartup $ Win32Notify.watchDir dir prune hooks
|
||||
watchDir :: FilePath -> Pruner -> Bool -> WatchHooks -> (IO Win32Notify.WatchManager -> IO Win32Notify.WatchManager) -> IO DirWatcherHandle
|
||||
watchDir dir prune scanevents hooks runstartup =
|
||||
runstartup $ Win32Notify.watchDir dir prune scanevents hooks
|
||||
#else
|
||||
type DirWatcherHandle = ()
|
||||
watchDir :: FilePath -> Pruner -> WatchHooks -> (IO () -> IO ()) -> IO DirWatcherHandle
|
||||
watchDir :: FilePath -> Pruner -> Bool -> WatchHooks -> (IO () -> IO ()) -> IO DirWatcherHandle
|
||||
watchDir = undefined
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -14,8 +14,8 @@ import System.OSX.FSEvents
|
|||
import qualified System.Posix.Files as Files
|
||||
import Data.Bits ((.&.))
|
||||
|
||||
watchDir :: FilePath -> (FilePath -> Bool) -> WatchHooks -> IO EventStream
|
||||
watchDir dir ignored hooks = do
|
||||
watchDir :: FilePath -> (FilePath -> Bool) -> Bool -> WatchHooks -> IO EventStream
|
||||
watchDir dir ignored scanevents hooks = do
|
||||
unlessM fileLevelEventsSupported $
|
||||
error "Need at least OSX 10.7.0 for file-level FSEvents"
|
||||
scan dir
|
||||
|
@ -79,9 +79,11 @@ watchDir dir ignored hooks = do
|
|||
Nothing -> noop
|
||||
Just s
|
||||
| Files.isSymbolicLink s ->
|
||||
runhook addSymlinkHook ms
|
||||
when scanevents $
|
||||
runhook addSymlinkHook ms
|
||||
| Files.isRegularFile s ->
|
||||
runhook addHook ms
|
||||
when scanevents $
|
||||
runhook addHook ms
|
||||
| otherwise ->
|
||||
noop
|
||||
where
|
||||
|
|
|
@ -46,8 +46,8 @@ import Control.Exception (throw)
|
|||
- So this will fail if there are too many subdirectories. The
|
||||
- errHook is called when this happens.
|
||||
-}
|
||||
watchDir :: INotify -> FilePath -> (FilePath -> Bool) -> WatchHooks -> IO ()
|
||||
watchDir i dir ignored hooks
|
||||
watchDir :: INotify -> FilePath -> (FilePath -> Bool) -> Bool -> WatchHooks -> IO ()
|
||||
watchDir i dir ignored scanevents hooks
|
||||
| ignored dir = noop
|
||||
| otherwise = do
|
||||
-- Use a lock to make sure events generated during initial
|
||||
|
@ -61,7 +61,7 @@ watchDir i dir ignored hooks
|
|||
mapM_ scan =<< filter (not . dirCruft) <$>
|
||||
getDirectoryContents dir
|
||||
where
|
||||
recurse d = watchDir i d ignored hooks
|
||||
recurse d = watchDir i d ignored scanevents hooks
|
||||
|
||||
-- Select only inotify events required by the enabled
|
||||
-- hooks, but always include Create so new directories can
|
||||
|
@ -85,9 +85,11 @@ watchDir i dir ignored hooks
|
|||
| Files.isDirectory s ->
|
||||
recurse $ indir f
|
||||
| Files.isSymbolicLink s ->
|
||||
runhook addSymlinkHook f ms
|
||||
when scanevents $
|
||||
runhook addSymlinkHook f ms
|
||||
| Files.isRegularFile s ->
|
||||
runhook addHook f ms
|
||||
when scanevents $
|
||||
runhook addHook f ms
|
||||
| otherwise ->
|
||||
noop
|
||||
|
||||
|
|
|
@ -13,8 +13,8 @@ import Utility.DirWatcher.Types
|
|||
import System.Win32.Notify
|
||||
import qualified Utility.PosixFiles as Files
|
||||
|
||||
watchDir :: FilePath -> (FilePath -> Bool) -> WatchHooks -> IO WatchManager
|
||||
watchDir dir ignored hooks = do
|
||||
watchDir :: FilePath -> (FilePath -> Bool) -> Bool -> WatchHooks -> IO WatchManager
|
||||
watchDir dir ignored scanevents hooks = do
|
||||
scan dir
|
||||
wm <- initWatchManager
|
||||
void $ watchDirectory wm dir True [Create, Delete, Modify, Move] handle
|
||||
|
@ -52,7 +52,8 @@ watchDir dir ignored hooks = do
|
|||
Nothing -> noop
|
||||
Just s
|
||||
| Files.isRegularFile s ->
|
||||
runhook addHook ms
|
||||
when scanevents $
|
||||
runhook addHook ms
|
||||
| otherwise ->
|
||||
noop
|
||||
where
|
||||
|
|
2
debian/changelog
vendored
2
debian/changelog
vendored
|
@ -7,6 +7,8 @@ git-annex (5.20140228) UNRELEASED; urgency=medium
|
|||
* webapp: No longer supports a port specified after --listen, since
|
||||
it was buggy, and that use case is better supported by setting up HTTPS.
|
||||
* annex.listen can be configured, instead of using --listen
|
||||
* annex.startupscan can be set to false to disable the assistant's startup
|
||||
scan.
|
||||
* Probe for quvi version at run time.
|
||||
* webapp: Filter out from Switch Repository list any
|
||||
repositories listed in autostart file that don't have a
|
||||
|
|
|
@ -1380,6 +1380,13 @@ Here are all the supported configuration settings.
|
|||
Set to false to prevent the git-annex assistant from automatically
|
||||
committing changes to files in the repository.
|
||||
|
||||
* `annex.startupscan`
|
||||
|
||||
Set to false to prevent the git-annex assistant from scanning the
|
||||
repository for new and changed files on startup. This will prevent it
|
||||
from noticing changes that were made while it was not running, but can be
|
||||
a useful performance tweak for a large repository.
|
||||
|
||||
* `annex.listen`
|
||||
|
||||
Configures which address the webapp listens on. The default is localhost.
|
||||
|
|
Loading…
Reference in a new issue