最初に投稿したあとに、更新することもあるのでそのコミットログと、いつの更新だったかを把握できるようにしたかった。
すでにHugoにはGitの情報を取得できる変数があったGitの情報を取得できる変数があるのでそれを利用する。
有効にする方法は、 config.toml
に
enableGitInfo = true
と書くと有効になります。
また、最終更新日の表示は、Page Variablesの .Lastmod
が利用できます。
今回その2つを利用して、
{{ with .GitInfo }}
<h3 class="subtitle is-6">{{$.Page.Site.Params.latest}}</h3>
<div class="content">
<a href="{{$.Page.Site.Params.repourl}}/commit/{{.GitInfo.Hash}}">{{$.Page.Lastmod}}</a>
</div>
{{ end }}
と書きました。($.Page.Site.Params.repourl
にはGitHubのURLを入れています)
ハマったこと
コミットのない投稿のプレビューができない
新しく作った投稿にはコミットハッシュがないため、.GitInfo
が取得できないというエラーが出てhugo server
を利用したプレビューが表示されません。
これを回避するために、with .GitInfo
を追加して、.GitInfo
がある場合のみ表示するようにしました。
wercker経由でのデプロイに失敗する
このサイトは、werckerを利用してGitHub Pages上にデプロイしています。
Hugoのビルドは、arjen/hugo-build
を利用しています。
.GitInfo
を利用するにあたって、gitinfo.go:39: Got error reading Git log: Git executable not found in $PATH
というエラーが出ていました。
解決方法としては、
steps:
- install-packages:
packages: git
- arjen/hugo-build:
version: "0.18"
theme: hemingway
flags: --buildDrafts=true
というように、arjen/hugo-build
を利用する前にgit
をインストールすることで対処できました。