]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Remove the internal GitInfo type and make Page.GitInf() return a pointer
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 7 Jul 2025 11:03:57 +0000 (13:03 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 7 Jul 2025 12:49:27 +0000 (14:49 +0200)
See #5693

hugolib/gitinfo.go
hugolib/hugo_sites.go
hugolib/page.go
hugolib/page__common.go
hugolib/page__meta.go
resources/page/page.go
resources/page/page_nop.go
resources/page/testhelpers_test.go
source/fileInfo.go
tpl/page/page_integration_test.go

index 6b5261084f2fd79964c4d15453215c3a8467218d..4786a95094d3e2f7886f2b387c855e65780081b6 100644 (file)
@@ -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) {
index 0b68af2ecddff306768b0dd2b2ad7516ab7a8e2b..a79a77d36a14e9ea556237758db27b16b1755d7e 100644 (file)
@@ -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
index dc0d9f4bce1e82d9158dff8d585b637593ab832c..5387c021df321122d4f744cfdc8f1f51949139cd 100644 (file)
@@ -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
 }
 
index f6f01bbe20492ed28774c5576e40b2bdc67784f4..0b9cf02004dac482000c86011388b4aad6da27ca 100644 (file)
@@ -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
index 1af489f1838dbd9d34ea006b192041ace67b4583..3c694ab41d11af6efee436b998b67c9a595d6bc9 100644 (file)
@@ -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
        }
 
index cbcfad5579652f541e334746913db5178b6246c5..490afd890e279e1298356105a9988df510db3ec4 100644 (file)
@@ -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
 }
index 398a7df02cef43c86d81645a2a7df6d8eaf1e794..0fc9628c9e0bd7faedc0bc3fbe0bbfff8aa90b3e 100644 (file)
@@ -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 {
index 1d2ee6223a65cbc300b91e5c0e99eedde4b7c766..5e1ec9a5892480273cbc6e2bca5edd6d17df5eeb 100644 (file)
@@ -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 {
index 7eff6fa23341a35588d5a2ac57079b2ff63a05c1..fff78e2fef7ecbf349a11fd1016bdbb451a6f8a2 100644 (file)
@@ -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
index 623501f25decca45abc84452048b1e6a9dc26ed1..f96c87f98b0deacaad8b9944dae6011bcd4aa4cc 100644 (file)
@@ -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 := `