Hugo で Git 情報を取得する

本家サイトを改装するにあたって Hugo の環境を見直している。 この作業でやったことをこのセクションで少しずつ紹介していこうと思う。

今回は git との連携の話。

.GitInfo

Hugo の環境を git で管理している場合は以下のコミット情報等をテンプレートに組み込むことができる。

テンプレート変数 内容
.GitInfo.AuthorName ユーザ名
.GitInfo.AuthorEmail ユーザのメールアドレス
.GitInfo.AuthorDate コミット時刻
.GitInfo.Hash リビジョン値
.GitInfo.AbbreviatedHash リビジョン値(短縮値)
.GitInfo.Subject コミット・メッセージ

.GitInfo を有効にするには Hugo コマンド起動時に --enableGitInfo オプションを付加するか設定ファイル(config.toml など)に

enableGitInfo = true

と設定すればよい。

ページ更新時刻 .Lastmod をコミット時刻にする

.GitInfo が有効であればページの更新時刻を示すテンプレート変数 .Lastmod の値がコミット時刻になる。

テンプレート変数 .Lastmod は,既定ではページの front matter 内の以下の変数にマッピングされている。

[frontmatter]
  lastmod = [":git", "lastmod", "date", "publishDate"]

配列の順番がそのまま優先順位になっている。 つまり ":git" がコミット時刻 .GitInfo.AuthorDate に対応する。

この設定は設定ファイルで変更可能なので,たとえば .GitInfo を有効にしたいがコミット時刻を更新時刻に使いたくない場合は

[frontmatter]
  lastmod = ["lastmod", "date", "publishDate"]

などとしてしまってもよい。

ちなみに入力ファイルのタイムスタンプを更新時刻にする場合は

[frontmatter]
  lastmod = [":fileModTime"]

などとする。 まぁ今どきファイルのタイムスタンプを更新時刻にするのはオススメではないが。