From 4679fbee41d34811edf3adf435611f51107c763b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Wed, 18 Nov 2015 22:59:32 +0100 Subject: [PATCH] Do not rebuild on extra Spotlight filesystem events Write and rename operations are often followed by CHMOD. There may be valid use cases for rebuilding the site on CHMOD, but that will require more complex logic than this simple conditional. On OS X this seems to be related to Spotlight, see: https://github.com/go-fsnotify/fsnotify/issues/15 A workaround is to put your site(s) on the Spotlight exception list, but that may be a little mysterious for most end users. So, for now, we skip reload on CHMOD. This small commit will be a 100% improvement for most OS X-users. Fixes #1587 --- commands/hugo.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/commands/hugo.go b/commands/hugo.go index a805d05db..f579d4b84 100644 --- a/commands/hugo.go +++ b/commands/hugo.go @@ -505,6 +505,18 @@ func NewWatcher(port int) error { continue } + // Write and rename operations are often followed by CHMOD. + // There may be valid use cases for rebuilding the site on CHMOD, + // but that will require more complex logic than this simple conditional. + // On OS X this seems to be related to Spotlight, see: + // https://github.com/go-fsnotify/fsnotify/issues/15 + // A workaround is to put your site(s) on the Spotlight exception list, + // but that may be a little mysterious for most end users. + // So, for now, we skip reload on CHMOD. + if ev.Op&fsnotify.Chmod == fsnotify.Chmod { + continue + } + isstatic := strings.HasPrefix(ev.Name, helpers.GetStaticDirPath()) || (len(helpers.GetThemesDirPath()) > 0 && strings.HasPrefix(ev.Name, helpers.GetThemesDirPath())) staticChanged = staticChanged || isstatic dynamicChanged = dynamicChanged || !isstatic