この記事は 一分で読める小ネタのカレンダー | Advent Calendar 2023 - Qiita の9日目
pre-commit
- git にはフックという機能があって、add や commit など、コマンドを実行する(した、終わった)タイミングで様々な処理を実行させることができる
- よくあるのは commit した時に事前チェックをおこない、合格しない場合はコミットを失敗させる、である
- そのフックを効率的に管理するツールが pre-commit
- 自分のリポジトリに導入すると、行儀のよいファイルをコミットできるようになる
- pre-commit を導入してルールによって統一されたファイル管理をしようって話
本文はここまで。以下は時間外w
インストールとか
- この記事を書くために自前のパブリックリポジトリに導入したw
- feat: use pre-commit by officel · Pull Request #75 · officel/dotfiles
vi .pre-commit-config.yaml # とりあえずPRにあるファイルをコピーすれば楽
brew install pre-commit # インストール方法は本家のドキュメントに従う
pre-commit --version
pre-commit install
pre-commit run --all-files
使い方
- pre-commit install したら後は勝手にコミット時に走る
- .pre-commit.yaml ファイルを必要に応じて更新していく
- pre-commit の名前のとおり、デフォルトのフックタイミングは pre-commit だけど、他のフックタイミング(stage)も指定できるので、いろいろ試すと面白い(やりすぎると自分でもうっとおしくなるので注意)
フック処理
- 参考に挙げたコードで使用している end-of-file-fixer と trailing-whitespace は最低限のマナーだと思うので、そのまま使って欲しい
- conventional-pre-commit は昨日の記事にも書いた Conventional Commits を強制してくれる
- 後はここから探す Supported hooks
- lint 系は言語によってそれぞれ存在する。しかも同じ言語で複数ずつ存在しているので、当然少しずつ出来ることやデフォルトが違っていたりする。この辺りは好みや使いやすさを調べたりチームと相談して欲しい
おまけ
- 恥を晒しておくwww fix: cleanup files by pre-commit
- 導入する前の古いファイルもあるので一概には言いにくいけど、やることやってるつもりでも対応が漏れることはよくあるという話
- 自分の(あるいはチームの共有)財産であるリポジトリにホコリが溜まったら嫌じゃん?掃除しようぜ、ということ
改善依頼
- おすすめフックはあえて書かなかったので、こんなの使ってるぜ、みたいなのコメントください
- pre-commit 以外で同様のツールをおすすめするぜ、があったらください