Files
Joe Mooring 6436deb3e1 create: Fix non-deterministic conflict detection in hugo new content
The contentInclusionFilter used strings.Contains to match filenames
against the target path. Because strings.Contains is a substring check,
a directory entry like "content/about" matches "content/about.md",
causing unrelated files to be pulled into the mini-build. Whether the
conflict was then detected depended on whether the filesystem walker
delivered a directory entry or a full file path.

Also adds an upfront check for the directory-conflict case, since
a corrected filter alone would allow about.md to be created alongside
an existing about/ directory.

Closes #12602
Closes #12786
Closes #14112
Closes #14769

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 15:06:28 +02:00

55 lines
1.3 KiB
Plaintext

hugo new project my-project
cd my-project
hugo new content --kind post post/first-post.md
! exists resources
grep 'draft = true' content/post/first-post.md
# Issue 12599
cd $WORK
hugo new project --format toml --force issue-12599
cp hugo.toml issue-12599/hugo.toml
cd issue-12599
hugo new content content/s1/2099-12-31-p1.md
hugo -DF
grep 'DATE _2099-12-31_' public/s1/p1/index.html
grep 'SLUG _p1_' public/s1/p1/index.html
grep 'TITLE _2099 12 31 P1_' public/s1/p1/index.html
# Issue 12602
cd $WORK
hugo new project issue-12602
cd issue-12602
hugo new content about/_index.md
! hugo new content about.md
stderr 'the target path conflicts with existing content'
# Issue 12786
cd $WORK
hugo new project issue-12786
cd issue-12786
hugo new content content/p1/index.md
! hugo new content content/p1/p2.md
stderr 'the target path conflicts with existing content'
# Issue 14112
cd $WORK
hugo new project issue-14112
cd issue-14112
hugo new content P1.md
! hugo new content p1.md
stderr 'the target path conflicts with existing content'
-- hugo.toml --
disableKinds = ['home','rss','section','sitemap','taxonomy','term']
[frontmatter]
date = [':filename', ':default']
publishDate = [':filename', ':default']
-- issue-12599/layouts/all.html --
DATE _{{ .Date.Format "2006-01-02" }}_
SLUG _{{ .Slug }}_
TITLE _{{ .Title }}_