mirror of
https://github.com/gohugoio/hugo.git
synced 2025-04-26 13:40:38 +03:00
commands: Move the CHMOD event filter up
To prevent ghost rebuilds (from VSCode and possibly others). Fixes #13373
This commit is contained in:
parent
5e4ffa0e89
commit
e6feb9e0be
1 changed files with 14 additions and 16 deletions
|
@ -663,7 +663,20 @@ func (c *hugoBuilder) handleEvents(watcher *watcher.Batcher,
|
||||||
var n int
|
var n int
|
||||||
for _, ev := range evs {
|
for _, ev := range evs {
|
||||||
keep := true
|
keep := true
|
||||||
if ev.Has(fsnotify.Create) || ev.Has(fsnotify.Write) {
|
// 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.
|
||||||
|
// We do have to check for WRITE though. On slower laptops a Chmod
|
||||||
|
// could be aggregated with other important events, and we still want
|
||||||
|
// to rebuild on those
|
||||||
|
if ev.Op == fsnotify.Chmod {
|
||||||
|
keep = false
|
||||||
|
} else if ev.Has(fsnotify.Create) || ev.Has(fsnotify.Write) {
|
||||||
if _, err := os.Stat(ev.Name); err != nil {
|
if _, err := os.Stat(ev.Name); err != nil {
|
||||||
keep = false
|
keep = false
|
||||||
}
|
}
|
||||||
|
@ -805,21 +818,6 @@ func (c *hugoBuilder) handleEvents(watcher *watcher.Batcher,
|
||||||
continue
|
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.
|
|
||||||
// We do have to check for WRITE though. On slower laptops a Chmod
|
|
||||||
// could be aggregated with other important events, and we still want
|
|
||||||
// to rebuild on those
|
|
||||||
if ev.Op&(fsnotify.Chmod|fsnotify.Write|fsnotify.Create) == fsnotify.Chmod {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
walkAdder := func(path string, f hugofs.FileMetaInfo) error {
|
walkAdder := func(path string, f hugofs.FileMetaInfo) error {
|
||||||
if f.IsDir() {
|
if f.IsDir() {
|
||||||
c.r.logger.Println("adding created directory to watchlist", path)
|
c.r.logger.Println("adding created directory to watchlist", path)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue