Posted at

husky が .git/hooks/* を作ってくれなかったが git の version が古いせいだった


つまり


  • husky は git の pre-commit (とか)のための hooks script を yarn したタイミングで作ってくれる

  • が,作ってくれないことがある


    • 例えば husky 3.0.9 だと git version が古い(<2.13.0)と作ってくれない



  • debian 9 だったので git が古かった (2.11.0)

  • git をソースからビルドして入れ直したら作ってくれるようになった


    • Mac とかならもっと楽に brew で新しいバージョン入ると思う




背景(蛇足)

開発環境を新しく作り直したので,リポジトリからもソースコードを git clone しなおし,幾つかコミットをしてみると,pre-commit が働いていない.どうも ./git/hooks が初期状態のままだ.普通なら yarn のタイミングで husky が hooks script を作ってくれるはずだが,それが作られていなかった.

なんだなんだと色々調べてみると,husky の github repository ページ (https://github.com/typicode/husky) で以下のような記述を見つける.

Existing hooks are kept. Requires Node >= 8.6.0 and Git >= 2.13.0.

手元のマシンの git は確かに 2.11.0 だ. debian 9 でテキトーに apt install git で入れただけだったのでかなり古かったのだ.ただ,2.11.0 でも今まで動いてたのに!と思い git の履歴で package.json を調べてみると,3ヶ月前に husky のバージョンが1系から3系に上げられていたのだった...

git のバージョンを上げるのは debian 9 でちょっと面倒くさかった

https://linuxize.com/post/how-to-install-git-on-debian-9/


References