GitInfo
Syntax
PAGE.GitInfo
Returns
source.GitInfo
The GitInfo
method on a Page
object returns an object with additional methods.
Prerequisites
Install Git, create a repository, and commit your project files.
You must also allow Hugo to access your repository. In your site configuration:
enableGitInfo: true
enableGitInfo = true
{
"enableGitInfo": true
}
Alternatively, use the command line flag when building your site:
hugo --enableGitInfo
Methods
AbbreviatedHash
(string
) The abbreviated commit hash.
{{ with .GitInfo }}
{{ .AbbreviatedHash }} → aab9ec0b3
{{ end }}
AuthorDate
(time.Time
) The author date.
{{ with .GitInfo }}
{{ .AuthorDate.Format "2006-01-02" }} → 2023-10-09
{{ end }}
AuthorEmail
(string
) The author’s email address, respecting gitmailmap.
{{ with .GitInfo }}
{{ .AuthorEmail }} → jsmith@example.org
{{ end }}
AuthorName
(string
) The author’s name, respecting gitmailmap.
{{ with .GitInfo }}
{{ .AuthorName }} → John Smith
{{ end }}
CommitDate
(time.Time
) The commit date.
{{ with .GitInfo }}
{{ .CommitDate.Format "2006-01-02" }} → 2023-10-09
{{ end }}
Hash
(string
) The commit hash.
{{ with .GitInfo }}
{{ .Hash }} → aab9ec0b31ebac916a1468c4c9c305f2bebf78d4
{{ end }}
Subject
(string
) The commit message subject.
{{ with .GitInfo }}
{{ .Subject }} → Add tutorials
{{ end }}
Body
(string
) The commit message body.
{{ with .GitInfo }}
{{ .Body }} → - Two new pages added.
{{ 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.
You can change this behavior in your site configuration.
Hosting considerations
When hosting your site in a CI/CD environment, the step that clones your project repository must perform a deep clone. If the clone is shallow, the Git information for a given file may not be accurate—it may reflect the most recent repository commit, not the commit that last modified the file.
Some providers perform deep clones by default, others allow you to configure the clone depth, and some providers only perform shallow clones.
Hosting service | Default clone depth | Configurable |
---|---|---|
AWS Amplify | Deep | N/A |
Cloudflare Pages | Shallow | Yes 1 |
DigitalOcean App Platform | Deep | N/A |
GitHub Pages | Shallow | Yes 2 |
GitLab Pages | Shallow | Yes 3 |
Netlify | Deep | N/A |
Render | Shallow | No |
Vercel | Shallow | No |
-
To configure a Cloudflare Pages site for deep cloning, preface the site’s normal Hugo build command with
git fetch --unshallow &&
(e.g.,git fetch --unshallow && hugo
). ↩︎ -
You can configure the GitHub Action to do a deep clone by specifying
fetch-depth: 0
in the applicable “checkout” step of your workflow file, as shown in the Hugo documentation’s example workflow file. ↩︎ -
You can configure the GitLab Runner’s clone depth as explained in the GitLab documentation; see also the Hugo documentation’s example workflow file. ↩︎