diff options
author | Bjørn Erik Pedersen <[email protected]> | 2021-07-02 09:54:03 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2021-07-04 16:12:28 +0200 |
commit | 24ce98b6d10b2088af61c15112f5c5ed915a0c35 (patch) | |
tree | 88b4090f4997b1763a1d9a49bcfa4ba92500647e /commands/hugo.go | |
parent | 0019d60f67b6c4dde085753641a917fcd0aa4c76 (diff) | |
download | hugo-24ce98b6d10b2088af61c15112f5c5ed915a0c35.tar.gz hugo-24ce98b6d10b2088af61c15112f5c5ed915a0c35.zip |
Add polling as a fallback to native filesystem events in server watch
Fixes #8720
Fixes #6849
Fixes #7930
Diffstat (limited to 'commands/hugo.go')
-rw-r--r-- | commands/hugo.go | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/commands/hugo.go b/commands/hugo.go index fddbe2b77..7f3b41048 100644 --- a/commands/hugo.go +++ b/commands/hugo.go @@ -523,7 +523,7 @@ func (c *commandeer) build() error { c.logger.Printf("Watching for changes in %s%s{%s}\n", baseWatchDir, helpers.FilePathSeparator, rootWatchDirs) c.logger.Println("Press Ctrl+C to stop") - watcher, err := c.newWatcher(watchDirs...) + watcher, err := c.newWatcher(c.h.poll, watchDirs...) checkErr(c.Logger, err) defer watcher.Close() @@ -820,7 +820,7 @@ func (c *commandeer) fullRebuild(changeType string) { } // newWatcher creates a new watcher to watch filesystem events. -func (c *commandeer) newWatcher(dirList ...string) (*watcher.Batcher, error) { +func (c *commandeer) newWatcher(poll bool, dirList ...string) (*watcher.Batcher, error) { if runtime.GOOS == "darwin" { tweakLimit() } @@ -830,7 +830,10 @@ func (c *commandeer) newWatcher(dirList ...string) (*watcher.Batcher, error) { return nil, err } - watcher, err := watcher.New(1 * time.Second) + // The second interval is used by the poll based watcher. + // Setting a shorter interval would make it snappier, + // but it would consume more CPU. + watcher, err := watcher.New(500*time.Millisecond, 700*time.Millisecond, poll) if err != nil { return nil, err } @@ -859,7 +862,7 @@ func (c *commandeer) newWatcher(dirList ...string) (*watcher.Batcher, error) { // Need to reload browser to show the error livereload.ForceRefresh() } - case err := <-watcher.Errors: + case err := <-watcher.Errors(): if err != nil { c.logger.Errorln("Error while watching:", err) } |