git cloneが--depth 50で日付がバグってた

昨日までブログの記事の日付がおかしくなってたので修正した。2017 年 2 月以前の記事がすべて 2017 年 2 月のある日付でポストされたことになるという症状 😱 カテゴリを導入 する前は Year のメニューを作ってたけど、2016 年の記事が空になってたので気づけた。

原因は Wercker 上で git clone するときの --depth 50 だった。

このブログは esa で編集した記事を Webhook で Git にプッシュして Wercker 上で Middleman によって HTML を生成して GitHub Pages にデプロイしている。1 この組み合わせだと記事のタイムスタンプと公開した時間が一致しない場合があった。そのため、Git のコミットから公開日時を取得するという方法をとっていた。2

しかし、Wercker で git clone するとき --depth 50 が指定されていたため、50 コミットより前に公開された記事の正確な公開日時が取得できずにバグっていた。

--depth をこちらで指定する方法が見つからなかったので wercker.yml で

  • --depth 50 で取得したレポジトリを削除
  • 同じディレクトリに --depth 指定なしで git clone

とすることで過去すべての履歴を取得して解決した。

esa と Middleman の組み合わせでだんだんつらみがでてきたなぁ 😞 Middleman をやめるか、、、esa で対応してくれないかなぁ。

Footnotes

  1. esaで書いた記事をGitHub Pagesでブログとして公開する - Qiita ↩

  2. nownab.log | Blogのタイムスタンプをごにょごにょした ↩