mirror of
https://github.com/gohugoio/hugo.git
synced 2026-08-24 15:28:54 +00:00
Fix server errors when deleting static files or directories
Fixes #15174
This commit is contained in:
@@ -426,16 +426,10 @@ func (d *SourceFilesystem) RealFilename(rel string) string {
|
||||
}
|
||||
|
||||
// Contains returns whether the given filename is a member of the current filesystem.
|
||||
// It's stat-free, so it also works for deleted files.
|
||||
func (d *SourceFilesystem) Contains(filename string) bool {
|
||||
for _, dir := range d.mounts() {
|
||||
if !dir.IsDir() {
|
||||
continue
|
||||
}
|
||||
if strings.HasPrefix(filename, dir.Meta().Filename) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
cps, _ := d.ReverseLookup(filename, false)
|
||||
return len(cps) > 0
|
||||
}
|
||||
|
||||
// RealDirs gets a list of absolute paths to directories starting from the given
|
||||
|
||||
@@ -1080,6 +1080,8 @@ func (h *HugoSites) processPartialFileEvents(ctx context.Context, l logg.LevelLo
|
||||
changes = append(changes, identity.GenghisKhan)
|
||||
case files.ComponentFolderArchetypes:
|
||||
// Ignore for now.
|
||||
case files.ComponentFolderStatic:
|
||||
// Handled by the static file syncer.
|
||||
default:
|
||||
panic(fmt.Sprintf("unknown component: %q", pathInfo.Component()))
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
# Test the hugo server command when removing a file mounted into static.
|
||||
# See issue 15174.
|
||||
|
||||
hugo server &
|
||||
|
||||
waitServer
|
||||
|
||||
rm myfiles/robots.txt
|
||||
|
||||
sleep 2
|
||||
|
||||
stopServer
|
||||
! stderr .
|
||||
|
||||
-- hugo.toml --
|
||||
title = "Hugo Server Test"
|
||||
baseURL = "https://example.org/"
|
||||
disableKinds = ["taxonomy", "term", "sitemap"]
|
||||
[[module.mounts]]
|
||||
source = "content"
|
||||
target = "content"
|
||||
[[module.mounts]]
|
||||
source = "layouts"
|
||||
target = "layouts"
|
||||
[[module.mounts]]
|
||||
source = "myfiles/robots.txt"
|
||||
target = "static/robots.txt"
|
||||
-- layouts/all.html --
|
||||
All.
|
||||
-- content/p1.md --
|
||||
-- myfiles/robots.txt --
|
||||
robots
|
||||
@@ -0,0 +1,32 @@
|
||||
# Test the hugo server command when removing a directory mounted into static.
|
||||
# See issue 15174.
|
||||
|
||||
hugo server &
|
||||
|
||||
waitServer
|
||||
|
||||
rm mystatic/foo
|
||||
|
||||
sleep 2
|
||||
|
||||
stopServer
|
||||
! stderr .
|
||||
|
||||
-- hugo.toml --
|
||||
title = "Hugo Server Test"
|
||||
baseURL = "https://example.org/"
|
||||
disableKinds = ["taxonomy", "term", "sitemap"]
|
||||
[[module.mounts]]
|
||||
source = "content"
|
||||
target = "content"
|
||||
[[module.mounts]]
|
||||
source = "layouts"
|
||||
target = "layouts"
|
||||
[[module.mounts]]
|
||||
source = "mystatic/foo"
|
||||
target = "static/foo"
|
||||
-- layouts/all.html --
|
||||
All.
|
||||
-- content/p1.md --
|
||||
-- mystatic/foo/static.txt --
|
||||
static
|
||||
Reference in New Issue
Block a user