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.
This commit is contained in:
xofyarg 2017-04-22 21:38:54 +01:00 committed by Bjørn Erik Pedersen
parent 90d3fbf1da
commit b5b6e81c02
2 changed files with 14 additions and 2 deletions

View file

@ -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)
}

View file

@ -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 {