shithub: hugo

Download patch

ref: b5b6e81c0269abf9b0f4bc6a127744a25344e5c6
parent: 90d3fbf1da93a279cfe994a226ae82cf5441deab
author: xofyarg <[email protected]>
date: Sat Apr 22 17:38:54 EDT 2017

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.

--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -728,6 +728,9 @@
 		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.
@@ -746,6 +749,15 @@
 			if ex, err := afero.Exists(s.Fs.Source, ev.Name); !ex || err != nil {
 				path, _ := helpers.GetRelativePath(ev.Name, s.getContentDir(ev.Name))
 				s.removePageByPath(path)
+				continue
+			}
+		}
+
+		// 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
 			}
 		}
--- a/source/filesystem.go
+++ b/source/filesystem.go
@@ -90,7 +90,7 @@
 			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) 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 {