]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix file mount specifity issue within the same module
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 20 Jan 2026 10:00:27 +0000 (11:00 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 20 Jan 2026 12:15:33 +0000 (13:15 +0100)
Fixes #14405

hugofs/component_fs.go
hugolib/sitesmatrix/sitematrix_integration_test.go

index 5b9e69d64f6fe6d74267561e900b11a968aa08f0..ec7f06a075a6f5a0c37726f34c6dfef3764c5495 100644 (file)
@@ -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 {
index 60a3e8a11cffc0e1e80fe8d5ca2ac95647b8a516..954dbd223cf9f8f16fb087a2c21b1c06e03710aa 100644 (file)
@@ -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|")
+}