mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-12 20:13:59 +02:00
Remove the internal GitInfo type and make Page.GitInf() return a pointer
See #5693
This commit is contained in:
@@ -30,14 +30,14 @@ type gitInfo struct {
|
||||
repo *gitmap.GitRepo
|
||||
}
|
||||
|
||||
func (g *gitInfo) forPage(p page.Page) source.GitInfo {
|
||||
func (g *gitInfo) forPage(p page.Page) *source.GitInfo {
|
||||
name := strings.TrimPrefix(filepath.ToSlash(p.File().Filename()), g.contentDir)
|
||||
name = strings.TrimPrefix(name, "/")
|
||||
gi, found := g.repo.Files[name]
|
||||
if !found {
|
||||
return source.GitInfo{}
|
||||
return nil
|
||||
}
|
||||
return source.NewGitInfo(*gi)
|
||||
return gi
|
||||
}
|
||||
|
||||
func newGitInfo(d *deps.Deps) (*gitInfo, error) {
|
||||
|
@@ -230,13 +230,13 @@ func (h *HugoSites) RegularPages() page.Pages {
|
||||
return v
|
||||
}
|
||||
|
||||
func (h *HugoSites) gitInfoForPage(p page.Page) (source.GitInfo, error) {
|
||||
func (h *HugoSites) gitInfoForPage(p page.Page) (*source.GitInfo, error) {
|
||||
if _, err := h.init.gitInfo.Do(context.Background()); err != nil {
|
||||
return source.GitInfo{}, err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if h.gitInfo == nil {
|
||||
return source.GitInfo{}, nil
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
return h.gitInfo.forPage(p), nil
|
||||
|
@@ -238,7 +238,7 @@ func (p *pageState) ApplyFilterToHeadings(ctx context.Context, fn func(*tableofc
|
||||
}
|
||||
}
|
||||
|
||||
func (p *pageState) GitInfo() source.GitInfo {
|
||||
func (p *pageState) GitInfo() *source.GitInfo {
|
||||
return p.gitInfo
|
||||
}
|
||||
|
||||
|
@@ -86,7 +86,7 @@ type pageCommon struct {
|
||||
targetPathDescriptor page.TargetPathDescriptor
|
||||
|
||||
// Set if feature enabled and this is in a Git repo.
|
||||
gitInfo source.GitInfo
|
||||
gitInfo *source.GitInfo
|
||||
codeowners []string
|
||||
|
||||
// Positional navigation
|
||||
|
@@ -405,7 +405,7 @@ func (p *pageState) setMetaPostParams() error {
|
||||
}
|
||||
|
||||
var gitAuthorDate time.Time
|
||||
if !p.gitInfo.IsZero() {
|
||||
if p.gitInfo != nil {
|
||||
gitAuthorDate = p.gitInfo.AuthorDate
|
||||
}
|
||||
|
||||
|
@@ -135,7 +135,7 @@ type GetPageProvider interface {
|
||||
// GitInfoProvider provides Git info.
|
||||
type GitInfoProvider interface {
|
||||
// GitInfo returns the Git info for this object.
|
||||
GitInfo() source.GitInfo
|
||||
GitInfo() *source.GitInfo
|
||||
// CodeOwners returns the code owners for this object.
|
||||
CodeOwners() []string
|
||||
}
|
||||
|
@@ -178,8 +178,8 @@ func (p *nopPage) GetTerms(taxonomy string) Pages {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *nopPage) GitInfo() source.GitInfo {
|
||||
return source.GitInfo{}
|
||||
func (p *nopPage) GitInfo() *source.GitInfo {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *nopPage) CodeOwners() []string {
|
||||
|
@@ -225,8 +225,8 @@ func (p *testPage) GetInternalRelatedDocsHandler() *RelatedDocsHandler {
|
||||
return relatedDocsHandler
|
||||
}
|
||||
|
||||
func (p *testPage) GitInfo() source.GitInfo {
|
||||
return source.GitInfo{}
|
||||
func (p *testPage) GitInfo() *source.GitInfo {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *testPage) CodeOwners() []string {
|
||||
|
@@ -16,7 +16,6 @@ package source
|
||||
import (
|
||||
"path/filepath"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/bep/gitmap"
|
||||
"github.com/gohugoio/hugo/common/hashing"
|
||||
@@ -154,50 +153,5 @@ func NewFileInfo(fi hugofs.FileMetaInfo) *File {
|
||||
}
|
||||
}
|
||||
|
||||
func NewGitInfo(info gitmap.GitInfo) GitInfo {
|
||||
gi := GitInfo{
|
||||
Hash: info.Hash,
|
||||
AbbreviatedHash: info.AbbreviatedHash,
|
||||
Subject: info.Subject,
|
||||
AuthorName: info.AuthorName,
|
||||
AuthorEmail: info.AuthorEmail,
|
||||
AuthorDate: info.AuthorDate,
|
||||
CommitDate: info.CommitDate,
|
||||
Body: info.Body,
|
||||
}
|
||||
|
||||
if info.Ancestor != nil {
|
||||
anc := NewGitInfo(*info.Ancestor)
|
||||
gi.Ancestor = &anc
|
||||
}
|
||||
|
||||
return gi
|
||||
}
|
||||
|
||||
// GitInfo provides information about a version controlled source file.
|
||||
type GitInfo struct {
|
||||
// Commit hash.
|
||||
Hash string `json:"hash"`
|
||||
// Abbreviated commit hash.
|
||||
AbbreviatedHash string `json:"abbreviatedHash"`
|
||||
// The commit message's subject/title line.
|
||||
Subject string `json:"subject"`
|
||||
// The author name, respecting .mailmap.
|
||||
AuthorName string `json:"authorName"`
|
||||
// The author email address, respecting .mailmap.
|
||||
AuthorEmail string `json:"authorEmail"`
|
||||
// The author date.
|
||||
AuthorDate time.Time `json:"authorDate"`
|
||||
// The commit date.
|
||||
CommitDate time.Time `json:"commitDate"`
|
||||
// The commit message's body.
|
||||
Body string `json:"body"`
|
||||
// The file-filtered ancestor commit, if any.
|
||||
Ancestor *GitInfo `json:"ancestor"`
|
||||
}
|
||||
|
||||
// IsZero returns true if the GitInfo is empty,
|
||||
// meaning it will also be falsy in the Go templates.
|
||||
func (g *GitInfo) IsZero() bool {
|
||||
return g == nil || g.Hash == ""
|
||||
}
|
||||
type GitInfo = gitmap.GitInfo
|
||||
|
@@ -221,7 +221,7 @@ disableLiveReload = true
|
||||
b.AssertFileContent("public/index.html", "1\n2\n3")
|
||||
}
|
||||
|
||||
func TestThatPageGitInfoShouldBeZero(t *testing.T) {
|
||||
func TestThatPageGitInfoShouldBeNil(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
files := `
|
||||
|
Reference in New Issue
Block a user