aboutsummaryrefslogtreecommitdiffhomepage
path: root/commands/hugo.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <[email protected]>2021-07-02 09:54:03 +0200
committerBjørn Erik Pedersen <[email protected]>2021-07-04 16:12:28 +0200
commit24ce98b6d10b2088af61c15112f5c5ed915a0c35 (patch)
tree88b4090f4997b1763a1d9a49bcfa4ba92500647e /commands/hugo.go
parent0019d60f67b6c4dde085753641a917fcd0aa4c76 (diff)
downloadhugo-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.go11
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)
}