diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-10-17 09:28:04 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-10-17 10:15:22 +0200 |
commit | 4a366fcfee24b3a5a5045b16c3b87b76147adf5e (patch) | |
tree | 7a8562579346a5dedb31137c896b6f5311ec061c /hugolib/hugo_sites_build.go | |
parent | 083311d0336ced35909b3375950f7817ecf95ed0 (diff) |
Prevent stale content in Fast Render Mode
We do that by re-render visited pages that is not already in the stack. This may potentially do some double work, but that small penalty should be well worth it.
Fixes #5281
Diffstat (limited to 'hugolib/hugo_sites_build.go')
-rw-r--r-- | hugolib/hugo_sites_build.go | 56 |
1 files changed, 34 insertions, 22 deletions
diff --git a/hugolib/hugo_sites_build.go b/hugolib/hugo_sites_build.go index 5bb328aa2..13fbfd57e 100644 --- a/hugolib/hugo_sites_build.go +++ b/hugolib/hugo_sites_build.go @@ -41,27 +41,29 @@ func (h *HugoSites) Build(config BuildCfg, events ...fsnotify.Event) error { conf.whatChanged = &whatChanged{source: true, other: true} } - for _, s := range h.Sites { - s.Deps.BuildStartListeners.Notify() - } + if !config.PartialReRender { + for _, s := range h.Sites { + s.Deps.BuildStartListeners.Notify() + } - if len(events) > 0 { - // Rebuild - if err := h.initRebuild(conf); err != nil { - return err + if len(events) > 0 { + // Rebuild + if err := h.initRebuild(conf); err != nil { + return err + } + } else { + if err := h.init(conf); err != nil { + return err + } } - } else { - if err := h.init(conf); err != nil { + + if err := h.process(conf, events...); err != nil { return err } - } - if err := h.process(conf, events...); err != nil { - return err - } - - if err := h.assemble(conf); err != nil { - return err + if err := h.assemble(conf); err != nil { + return err + } } if err := h.render(conf); err != nil { @@ -226,8 +228,10 @@ func (h *HugoSites) assemble(config *BuildCfg) error { } func (h *HugoSites) render(config *BuildCfg) error { - for _, s := range h.Sites { - s.initRenderFormats() + if !config.PartialReRender { + for _, s := range h.Sites { + s.initRenderFormats() + } } for _, s := range h.Sites { @@ -240,15 +244,23 @@ func (h *HugoSites) render(config *BuildCfg) error { isRenderingSite := s == s2 - if err := s2.preparePagesForRender(isRenderingSite && i == 0); err != nil { - return err + if !config.PartialReRender { + if err := s2.preparePagesForRender(isRenderingSite && i == 0); err != nil { + return err + } } } if !config.SkipRender { - if err := s.render(config, i); err != nil { - return err + if config.PartialReRender { + if err := s.renderPages(config); err != nil { + return err + } + } else { + if err := s.render(config, i); err != nil { + return err + } } } } |