diff --git a/docs/content/en/methods/page/GitInfo.md b/docs/content/en/methods/page/GitInfo.md index 5fde05b07c6..88968239008 100644 --- a/docs/content/en/methods/page/GitInfo.md +++ b/docs/content/en/methods/page/GitInfo.md @@ -117,6 +117,22 @@ hugo --enableGitInfo {{ end }} ``` +###### Ancestor + +(`*source.GitInfo`) The file-filtered ancestor commit, if any. + +```go-html-template +{{ partial "inline/changelog.html" .GitInfo }} → 2023-10-09: Add tutorials + 2025-03-26: Edit GitInfo docs + +{{ define "_partials/inline/changelog.html" }} + {{ with . }} + {{ partial "inline/changelog.html" .Ancestor }} + {{ .CommitDate.Format "2006-01-02" }}: {{ .Subject }}
+ {{ end }} +{{ end }} +``` + ## Last modified date By default, when `enableGitInfo` is `true`, the `Lastmod` method on a `Page` object returns the Git AuthorDate of the last commit that included the file. diff --git a/go.mod b/go.mod index 9423c6f682b..64b4fd2691b 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/cloudfront v1.44.10 github.com/bep/clocks v0.5.0 github.com/bep/debounce v1.2.0 - github.com/bep/gitmap v1.6.0 + github.com/bep/gitmap v1.7.0 github.com/bep/goat v0.5.0 github.com/bep/godartsass/v2 v2.5.0 github.com/bep/golibsass v1.2.0 diff --git a/go.sum b/go.sum index 5712679f00a..2def680eb34 100644 --- a/go.sum +++ b/go.sum @@ -125,8 +125,8 @@ github.com/bep/clocks v0.5.0 h1:hhvKVGLPQWRVsBP/UB7ErrHYIO42gINVbvqxvYTPVps= github.com/bep/clocks v0.5.0/go.mod h1:SUq3q+OOq41y2lRQqH5fsOoxN8GbxSiT6jvoVVLCVhU= github.com/bep/debounce v1.2.0 h1:wXds8Kq8qRfwAOpAxHrJDbCXgC5aHSzgQb/0gKsHQqo= github.com/bep/debounce v1.2.0/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0= -github.com/bep/gitmap v1.6.0 h1:sDuQMm9HoTL0LtlrfxjbjgAg2wHQd4nkMup2FInYzhA= -github.com/bep/gitmap v1.6.0/go.mod h1:n+3W1f/rot2hynsqEGxGMErPRgT41n9CkGuzPvz9cIw= +github.com/bep/gitmap v1.7.0 h1:jvPnRQv5RG6IDPrwoDiwAhTE/DmdEkOW4poFeUYmjI8= +github.com/bep/gitmap v1.7.0/go.mod h1:n+3W1f/rot2hynsqEGxGMErPRgT41n9CkGuzPvz9cIw= github.com/bep/goat v0.5.0 h1:S8jLXHCVy/EHIoCY+btKkmcxcXFd34a0Q63/0D4TKeA= github.com/bep/goat v0.5.0/go.mod h1:Md9x7gRxiWKs85yHlVTvHQw9rg86Bm+Y4SuYE8CTH7c= github.com/bep/godartsass/v2 v2.5.0 h1:tKRvwVdyjCIr48qgtLa4gHEdtRkPF8H1OeEhJAEv7xg= diff --git a/source/fileInfo.go b/source/fileInfo.go index dfa5cda26af..7eff6fa2334 100644 --- a/source/fileInfo.go +++ b/source/fileInfo.go @@ -155,7 +155,23 @@ func NewFileInfo(fi hugofs.FileMetaInfo) *File { } func NewGitInfo(info gitmap.GitInfo) GitInfo { - return GitInfo(info) + 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. @@ -176,10 +192,12 @@ type GitInfo struct { 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.Hash == "" +func (g *GitInfo) IsZero() bool { + return g == nil || g.Hash == "" }