From b5b6e81c0269abf9b0f4bc6a127744a25344e5c6 Mon Sep 17 00:00:00 2001 From: xofyarg Date: Sat, 22 Apr 2017 21:38:54 +0100 Subject: [PATCH] hugolib: Ignore non-source files on partial rebuild Partial rebuild does not have the same logic as normal rebuild on selecting which file to build. This change makes it possible to share the file select logic between two kinds of build. Fix #3325. --- hugolib/site.go | 12 ++++++++++++ source/filesystem.go | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/hugolib/site.go b/hugolib/site.go index 3b7d4753..f2ebee4c 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -728,6 +728,9 @@ func (s *Site) reProcess(events []fsnotify.Event) (whatChanged, error) { go pageConverter(pageChan, convertResults, wg2) } + sp := source.NewSourceSpec(s.Cfg, s.Fs) + fs := sp.NewFilesystem("") + for _, ev := range sourceChanged { // The incrementalReadCollator below will also make changes to the site's pages, // so we do this first to prevent races. @@ -750,6 +753,15 @@ func (s *Site) reProcess(events []fsnotify.Event) (whatChanged, error) { } } + // ignore files shouldn't be proceed + if fi, err := s.Fs.Source.Stat(ev.Name); err != nil { + continue + } else { + if ok, err := fs.ShouldRead(ev.Name, fi); err != nil || !ok { + continue + } + } + sourceReallyChanged = append(sourceReallyChanged, ev) } diff --git a/source/filesystem.go b/source/filesystem.go index a1312814..ceea96ea 100644 --- a/source/filesystem.go +++ b/source/filesystem.go @@ -90,7 +90,7 @@ func (f *Filesystem) captureFiles() { return nil } - b, err := f.shouldRead(filePath, fi) + b, err := f.ShouldRead(filePath, fi) if err != nil { return err } @@ -118,7 +118,7 @@ func (f *Filesystem) captureFiles() { } -func (f *Filesystem) shouldRead(filePath string, fi os.FileInfo) (bool, error) { +func (f *Filesystem) ShouldRead(filePath string, fi os.FileInfo) (bool, error) { if fi.Mode()&os.ModeSymlink == os.ModeSymlink { link, err := filepath.EvalSymlinks(filePath) if err != nil { -- 2.30.2