Fix file mount specifity issue within the same module

Fixes #14405
This commit is contained in:
Bjørn Erik Pedersen
2026-01-20 11:00:27 +01:00
parent 77214117ae
commit c1b2e58bfb
2 changed files with 55 additions and 0 deletions
+4
View 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 {
@@ -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|")
}