Jekyllに更新履歴を表示する

ブログの記事を黙って修正するのは不誠実なので、修正箇所や修正日時を明示するべきだという考え方がある。しかし、修正が度重なると打ち消し線や「○年○月○日追記:」などが錯綜して読みづらい。記事をGitで管理してGitHubで公開しているのだから、それを使って更新履歴を表示すればいいのではないか。

上記2つはGitHubのHistoryへのリンクを貼るというアプローチだが、ここではssig33.com - コンテンツに履歴表示するもの作ったのような形式でページ内に更新履歴を表示してみる。

JavaScriptからGitHubのAPIを叩けばファイルの更新履歴は取れるんだけど、認証していないと1時間あたり60回までしかコールできないし、要素が動的に追加されるとなんとなく落ち着かない感じがする。Jekyllでページを生成するときに更新履歴を書きだすことにした。Gitの操作にはgritを使っている。

「マークアップを変えた」みたいな本質的ではない変更まで履歴に表示されるのが気にならなくもない。更新履歴に出したくないコミットのメッセージには[minorfix]という文字列を入れる、みたいなルールを決めるといいかもしれない。

ところで、Gitのコミットログは改変できるし、GitHub上のリポジトリもgit push -fで上書きできるので、「この間まで○○という記述があったのに、いつの間にか消えている。こっそり書き換えたに違いない」と言われると反証するのが難しい気がする。この点については更新履歴を保存してない大多数の他のブログサービスと変わりがない。

使い方

  1. _plugins/git_log.rbをコピーして、ソース内のURLを修正する。
  2. _layout/post.htmlのように、更新履歴を表示したいページに{% git_log %}を挿入する。