GitInfo
Syntax
PAGE.GitInfo
Returns
source.GitInfo
Page
对象上的GitInfo
方法返回带有附加方法的对象。
先决条件
安装 Git,创建一个存储库并提交项目文件。
您还必须允许Hugo访问您的存储库。在站点配置中:
hugo.
enableGitInfo: true
enableGitInfo = true
{
"enableGitInfo": true
}
或者在构建站点时使用命令行标志:
hugo --enableGitInfo
方法
- AbbreviatedHash
- (
string
) 缩写的提交哈希值。
{{ with .GitInfo }}
{{ .AbbreviatedHash }} → aab9ec0b3
{{ end }}
- AuthorDate
- (
time.Time
) 作者日期。
{{ with .GitInfo }}
{{ .AuthorDate.Format "2006-01-02" }} → 2023-10-09
{{ end }}
- AuthorEmail
- (
string
) 作者的电子邮件地址,符合 gitmailmap。
{{ with .GitInfo }}
{{ .AuthorEmail }} → jsmith@example.org
{{ end }}
- AuthorName
- (
string
) 作者的名称,符合 gitmailmap。
{{ with .GitInfo }}
{{ .AuthorName }} → John Smith
{{ end }}
- Hash
- (
string
) 提交的完整哈希值。
{{ with .GitInfo }}
{{ .Hash }} → aab9ec0b31ebac916a1468c4c9c305f2bebf78d4
{{ end }}
- Subject
- (
string
) 提交的消息主题。
{{ with .GitInfo }}
{{ .Subject }} → 添加教程
{{ end }}
最后修改日期
默认情况下,当enableGitInfo
为true
时,Page
对象上的Lastmod
方法返回文件的Git作者日期,该日期是最后一次提交包含该文件的日期。
您可以在您的站点配置中更改此行为。
托管考虑事项
在CI/CD环境中托管您的网站时,克隆项目存储库的步骤必须执行深度克隆。如果克隆是浅层的,则给定文件的Git信息可能不准确,它可能反映的是最近的存储库提交,而不是最后修改文件的提交。
一些提供商默认执行深度克隆,其他一些提供商允许您配置克隆深度,而某些提供商仅执行浅层克隆。
托管服务 | 默认克隆深度 | 可配置 |
---|---|---|
Cloudflare Pages | 浅层 | 是 1 |
DigitalOcean App Platform | 深度 | 不适用 |
GitHub Pages | 浅层 | 是 2 |
GitLab Pages | 浅层 | 是 3 |
Netlify | 深度 | 不适用 |
Render | 浅层 | 否 |
Vercel | 浅层 | 否 |
-
要为Cloudflare Pages站点配置深度克隆,请在站点的常规Hugo构建命令前加上
git fetch --unshallow &&
(例如,git fetch --unshallow && hugo
)。 ↩︎ -
您可以通过在工作流文件的适用"checkout"步骤中指定
fetch-depth: 0
来配置GitHub Action进行深度克隆,示例可参见Hugo文档的示例工作流文件。 ↩︎ -
您可以根据GitLab文档中的说明 as explained in the GitLab documentation 配置GitLab Runner的克隆深度;还可以参考 Hugo 文档中的示例工作流文件。 ↩︎