hugolib: Fix GitInfo when multiple content dirs - hugo - [fork] hugo port for 9front
 (HTM) git clone git@git.drkhsh.at/hugo.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 2182ecfd34a24521bf0e3c939627a55327eb1e19
 (DIR) parent e85833d868a902840c5ed1c90713256153b2548b
 (HTM) Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
       Date:   Sat, 11 Aug 2018 16:37:00 +0200
       
       hugolib: Fix GitInfo when multiple content dirs
       
       Fixes #5054
       
       Diffstat:
         M hugolib/gitinfo.go                  |      22 ++++++----------------
         M hugolib/page_test.go                |      35 ++++++++++++++++++++++++++++---
       
       2 files changed, 38 insertions(+), 19 deletions(-)
       ---
 (DIR) diff --git 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
        }
 (DIR) diff --git 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) {