mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
Do not watch directories with no mounted files in it
Fixes #12912 Fixes #13007
This commit is contained in:
parent
6cf23bf882
commit
fcdc454cc5
2 changed files with 35 additions and 8 deletions
|
@ -246,11 +246,11 @@ func (fs *RootMappingFs) Mounts(base string) ([]FileMetaInfo, error) {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
fss := make([]FileMetaInfo, len(roots))
|
fss := make([]FileMetaInfo, 0, len(roots))
|
||||||
for i, r := range roots {
|
for _, r := range roots {
|
||||||
if r.fiSingleFile != nil {
|
if r.fiSingleFile != nil {
|
||||||
// A single file mount.
|
// A single file mount.
|
||||||
fss[i] = r.fiSingleFile
|
fss = append(fss, r.fiSingleFile)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
bfs := NewBasePathFs(fs.Fs, r.To)
|
bfs := NewBasePathFs(fs.Fs, r.To)
|
||||||
|
@ -261,9 +261,9 @@ func (fs *RootMappingFs) Mounts(base string) ([]FileMetaInfo, error) {
|
||||||
fs = decorateDirs(fs, r.Meta)
|
fs = decorateDirs(fs, r.Meta)
|
||||||
fi, err := fs.Stat("")
|
fi, err := fs.Stat("")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("RootMappingFs.Dirs: %w", err)
|
continue
|
||||||
}
|
}
|
||||||
fss[i] = fi.(FileMetaInfo)
|
fss = append(fss, fi.(FileMetaInfo))
|
||||||
}
|
}
|
||||||
|
|
||||||
return fss, nil
|
return fss, nil
|
||||||
|
|
|
@ -220,6 +220,18 @@ target = 'content'
|
||||||
source = 'content2'
|
source = 'content2'
|
||||||
target = 'content/c2'
|
target = 'content/c2'
|
||||||
[[module.mounts]]
|
[[module.mounts]]
|
||||||
|
source = 'content3'
|
||||||
|
target = 'content/watchdisabled'
|
||||||
|
disableWatch = true
|
||||||
|
[[module.mounts]]
|
||||||
|
source = 'content4'
|
||||||
|
target = 'content/excludedsome'
|
||||||
|
excludeFiles = 'p1.md'
|
||||||
|
[[module.mounts]]
|
||||||
|
source = 'content5'
|
||||||
|
target = 'content/excludedall'
|
||||||
|
excludeFiles = '/**'
|
||||||
|
[[module.mounts]]
|
||||||
source = "hugo_stats.json"
|
source = "hugo_stats.json"
|
||||||
target = "assets/watching/hugo_stats.json"
|
target = "assets/watching/hugo_stats.json"
|
||||||
-- hugo_stats.json --
|
-- hugo_stats.json --
|
||||||
|
@ -230,12 +242,27 @@ foo
|
||||||
-- themes/t1/layouts/_default/single.html --
|
-- themes/t1/layouts/_default/single.html --
|
||||||
{{ .Content }}
|
{{ .Content }}
|
||||||
-- themes/t1/static/f1.txt --
|
-- themes/t1/static/f1.txt --
|
||||||
|
-- content3/p1.md --
|
||||||
|
-- content4/p1.md --
|
||||||
|
-- content4/p2.md --
|
||||||
|
-- content5/p3.md --
|
||||||
|
-- content5/p4.md --
|
||||||
`
|
`
|
||||||
b := hugolib.Test(t, files)
|
b := hugolib.Test(t, files)
|
||||||
bfs := b.H.BaseFs
|
bfs := b.H.BaseFs
|
||||||
watchFilenames := bfs.WatchFilenames()
|
watchFilenames := toSlashes(bfs.WatchFilenames())
|
||||||
// []string{"/hugo_stats.json", "/content", "/content2", "/themes/t1/layouts", "/themes/t1/layouts/_default", "/themes/t1/static"}
|
|
||||||
b.Assert(watchFilenames, qt.HasLen, 6)
|
// content3 has disableWatch = true
|
||||||
|
// content5 has excludeFiles = '/**'
|
||||||
|
b.Assert(watchFilenames, qt.DeepEquals, []string{"/hugo_stats.json", "/content", "/content2", "/content4", "/themes/t1/layouts", "/themes/t1/layouts/_default", "/themes/t1/static"})
|
||||||
|
}
|
||||||
|
|
||||||
|
func toSlashes(in []string) []string {
|
||||||
|
out := make([]string, len(in))
|
||||||
|
for i, s := range in {
|
||||||
|
out[i] = filepath.ToSlash(s)
|
||||||
|
}
|
||||||
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNoSymlinks(t *testing.T) {
|
func TestNoSymlinks(t *testing.T) {
|
||||||
|
|
Loading…
Reference in a new issue