From: Bjørn Erik Pedersen Date: Tue, 20 Jan 2026 10:00:27 +0000 (+0100) Subject: Fix file mount specifity issue within the same module X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=c1b2e58bfb9420aa92562cdbfa40de782b788234;p=brevno-suite%2Fhugo Fix file mount specifity issue within the same module Fixes #14405 --- diff --git a/hugofs/component_fs.go b/hugofs/component_fs.go index 5b9e69d64..ec7f06a07 100644 --- a/hugofs/component_fs.go +++ b/hugofs/component_fs.go @@ -133,6 +133,10 @@ func (f *componentFsDir) ReadDirWithContext(ctx context.Context, count int) ([]i bi, bj := fimim.PathInfo.Base(), fimjm.PathInfo.Base() if bi == bj { + // Check mount weight first for same module (earlier mounts should win). + if fimim.ModuleOrdinal == fimjm.ModuleOrdinal && fimim.Weight != fimjm.Weight { + return fimim.Weight > fimjm.Weight + } matrixi, matrixj := fimim.SitesMatrix, fimjm.SitesMatrix l1, l2 := matrixi.LenVectors(), matrixj.LenVectors() if l1 != l2 { diff --git a/hugolib/sitesmatrix/sitematrix_integration_test.go b/hugolib/sitesmatrix/sitematrix_integration_test.go index 60a3e8a11..954dbd223 100644 --- a/hugolib/sitesmatrix/sitematrix_integration_test.go +++ b/hugolib/sitesmatrix/sitematrix_integration_test.go @@ -1430,3 +1430,54 @@ All. b = hugolib.Test(t, files) b.AssertFileContent("public/guest/en/index.html", "url=https://example.org/guest/\"") } + +func TestSitesMatrixFileMountOrder(t *testing.T) { + t.Parallel() + + files := ` +-- hugo.toml -- +baseURL = "https://example.org/" +defaultContentVersion = "v1.0.0" +defaultContentVersionInSubDir = true +disableKinds = ["taxonomy", "term", "rss", "sitemap"] + +[versions] +[versions."v1.0.0"] +[versions."v2.0.0"] + +[[module.mounts]] +source = 'content/v1' +target = 'content' +[module.mounts.sites.matrix] +versions = ["**"] +[[module.mounts]] +source = 'content/v21' +target = 'content' +[module.mounts.sites.matrix] +versions = ["v2.0.0"] +[[module.mounts]] +source = 'content/v22' +target = 'content' +[module.mounts.sites.matrix] +versions = ["v2.0.0"] +-- content/v1/p1.md -- +--- +title: "P1 v1" +--- +-- content/v21/p1.md -- +--- +title: "P1 v21" +--- +-- content/v22/p1.md -- +--- +title: "P1 v22" +--- +-- layouts/all.html -- +Title: {{ .Title }}| +` + + b := hugolib.Test(t, files) + + b.AssertFileContent("public/v1.0.0/p1/index.html", "Title: P1 v1|") + b.AssertFileContent("public/v2.0.0/p1/index.html", "Title: P1 v1|") +}