summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <[email protected]>2018-08-11 16:37:00 +0200
committerBjørn Erik Pedersen <[email protected]>2018-08-11 19:51:19 +0200
commit2182ecfd34a24521bf0e3c939627a55327eb1e19 (patch)
tree795cc59d12ff289e3b1c92976613f4e9bd3a1e34
parente85833d868a902840c5ed1c90713256153b2548b (diff)
downloadhugo-2182ecfd34a24521bf0e3c939627a55327eb1e19.tar.gz
hugo-2182ecfd34a24521bf0e3c939627a55327eb1e19.zip
hugolib: Fix GitInfo when multiple content dirs
Fixes #5054
-rw-r--r--hugolib/gitinfo.go22
-rw-r--r--hugolib/page_test.go35
2 files changed, 38 insertions, 19 deletions
diff --git a/hugolib/gitinfo.go b/hugolib/gitinfo.go
index affa9cea8..d356fcf07 100644
--- a/hugolib/gitinfo.go
+++ b/hugolib/gitinfo.go
@@ -14,13 +14,11 @@
package hugolib
import (
- "path"
"path/filepath"
"strings"
"github.com/bep/gitmap"
"github.com/gohugoio/hugo/config"
- "github.com/gohugoio/hugo/helpers"
)
type gitInfo struct {
@@ -32,28 +30,20 @@ func (g *gitInfo) forPage(p *Page) (*gitmap.GitInfo, bool) {
if g == nil {
return nil, false
}
- name := path.Join(g.contentDir, filepath.ToSlash(p.Path()))
+
+ name := strings.TrimPrefix(filepath.ToSlash(p.Filename()), g.contentDir)
+ name = strings.TrimPrefix(name, "/")
+
return g.repo.Files[name], true
}
func newGitInfo(cfg config.Provider) (*gitInfo, error) {
- var (
- workingDir = cfg.GetString("workingDir")
- contentDir = cfg.GetString("contentDir")
- )
+ workingDir := cfg.GetString("workingDir")
gitRepo, err := gitmap.Map(workingDir, "")
if err != nil {
return nil, err
}
- repoPath := filepath.FromSlash(gitRepo.TopLevelAbsPath)
- // The Hugo site may be placed in a sub folder in the Git repo,
- // one example being the Hugo docs.
- // We have to find the root folder to the Hugo site below the Git root.
- contentRoot := strings.TrimPrefix(workingDir, repoPath)
- contentRoot = strings.TrimPrefix(contentRoot, helpers.FilePathSeparator)
- contentDir = path.Join(filepath.ToSlash(contentRoot), contentDir)
-
- return &gitInfo{contentDir: contentDir, repo: gitRepo}, nil
+ return &gitInfo{contentDir: gitRepo.TopLevelAbsPath, repo: gitRepo}, nil
}
diff --git a/hugolib/page_test.go b/hugolib/page_test.go
index b512a9a5a..adf4294fc 100644
--- a/hugolib/page_test.go
+++ b/hugolib/page_test.go
@@ -921,21 +921,50 @@ func TestPageWithLastmodFromGitInfo(t *testing.T) {
cfg.Set("frontmatter", map[string]interface{}{
"lastmod": []string{":git", "lastmod"},
})
+ cfg.Set("defaultContentLanguage", "en")
+ langConfig := map[string]interface{}{
+ "en": map[string]interface{}{
+ "weight": 1,
+ "languageName": "English",
+ "contentDir": "content",
+ },
+ "nn": map[string]interface{}{
+ "weight": 2,
+ "languageName": "Nynorsk",
+ "contentDir": "content_nn",
+ },
+ }
+
+ cfg.Set("languages", langConfig)
cfg.Set("enableGitInfo", true)
assrt.NoError(loadDefaultSettingsFor(cfg))
+ assrt.NoError(loadLanguageSettings(cfg, nil))
wd, err := os.Getwd()
assrt.NoError(err)
cfg.Set("workingDir", filepath.Join(wd, "testsite"))
- s := buildSingleSite(t, deps.DepsCfg{Fs: fs, Cfg: cfg}, BuildCfg{SkipRender: true})
+ h, err := NewHugoSites(deps.DepsCfg{Fs: fs, Cfg: cfg})
- assrt.Len(s.RegularPages, 1)
+ assrt.NoError(err)
+ assrt.Len(h.Sites, 2)
+
+ require.NoError(t, h.Build(BuildCfg{SkipRender: true}))
+
+ enSite := h.Sites[0]
+ assrt.Len(enSite.RegularPages, 1)
// 2018-03-11 is the Git author date for testsite/content/first-post.md
- assrt.Equal("2018-03-11", s.RegularPages[0].Lastmod.Format("2006-01-02"))
+ assrt.Equal("2018-03-11", enSite.RegularPages[0].Lastmod.Format("2006-01-02"))
+
+ nnSite := h.Sites[1]
+ assrt.Len(nnSite.RegularPages, 1)
+
+ // 2018-08-11 is the Git author date for testsite/content_nn/first-post.md
+ assrt.Equal("2018-08-11", nnSite.RegularPages[0].Lastmod.Format("2006-01-02"))
+
}
func TestPageWithFrontMatterConfig(t *testing.T) {