]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
create: Return error instead of panic when page not found
authoreason <85663565+mango766@users.noreply.github.com>
Mon, 23 Mar 2026 16:50:15 +0000 (00:50 +0800)
committerGitHub <noreply@github.com>
Mon, 23 Mar 2026 16:50:15 +0000 (17:50 +0100)
When `hugo new` creates a content file on a case-insensitive filesystem
where a file with the same name but different case already exists (e.g.
Floop.md vs floop.md), the internal page lookup fails because it uses
exact string comparison. This previously caused an unhelpful panic.

Replace the panic with a descriptive error message that tells the user
what went wrong and suggests checking for case-variant filenames.

Fixes #14112

Co-authored-by: easonysliu <easonysliu@tencent.com>
Co-authored-by: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
create/content.go

index 7c04d2f525a47b2b15a2f8a5824ab13428aad5b7..519346960a5c68356cf8c890ab0b44029c05be82 100644 (file)
@@ -271,7 +271,7 @@ func (b *contentBuilder) setArcheTypeFilenameToUse(ext string) {
 func (b *contentBuilder) applyArcheType(contentFilename string, archetypeFi hugofs.FileMetaInfo) error {
        p := b.h.GetContentPage(contentFilename)
        if p == nil {
-               panic(fmt.Sprintf("[BUG] no Page found for %q", contentFilename))
+               return fmt.Errorf("no page found for %q; if a file with the same name but different case already exists, please use a different filename or remove the existing file", contentFilename)
        }
 
        f, err := b.sourceFs.Create(contentFilename)