Git variables
.GitInfo
prerequisites
- The Hugo site must be in a Git-enabled directory.
- The Git executable must be installed and in your system
PATH
. - The
.GitInfo
feature must be enabled in your Hugo project by passing--enableGitInfo
flag on the command line or by settingenableGitInfo
totrue
in your site’s configuration file.
The .GitInfo
object
The GitInfo
object contains the following fields:
- .AbbreviatedHash
- the abbreviated commit hash (e.g.,
866cbcc
) - .AuthorName
- the author’s name, respecting
.mailmap
- .AuthorEmail
- the author’s email address, respecting
.mailmap
- .AuthorDate
- the author date
- .Hash
- the commit hash (e.g.,
866cbccdab588b9908887ffd3b4f2667e94090c3
) - .Subject
- commit message subject (e.g.,
tpl: Add custom index function
)
.Lastmod
If the .GitInfo
feature is enabled, .Lastmod
(on Page
) is fetched from Git i.e. .GitInfo.AuthorDate
. This behavior can be changed by adding your own front matter configuration for dates.
Hosting considerations
On the site host, your repository must be “deep-cloned,” so the returned .GitInfo
data will be accurate. Otherwise, your site may display only data from your latest commit. Where it’s not possible to configure a host’s cloning depth, you must handle this through CI/CD (e.g., a GitHub Action or GitLab CI/CD). See the following table:
Hosting service | Clone depth | Configurable? |
---|---|---|
Cloudflare Pages | Shallow | ✔️ 1 |
DigitalOcean App Platform | Deep | ❌ |
GitHub Pages | Shallow | ✔️ 2 |
GitLab Pages | Shallow | ✔️ 3 |
Netlify | Deep | ❌ |
Render | Shallow | ❌ |
Vercel | Shallow | ❌ |
-
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. ↩︎