1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

一分で読める小ネタAdvent Calendar 2023

Day 9

pre-commit を使ってみよう

Last updated at Posted at 2023-12-08

この記事は 一分で読める小ネタのカレンダー | Advent Calendar 2023 - Qiita の9日目

pre-commit

  • git にはフックという機能があって、add や commit など、コマンドを実行する(した、終わった)タイミングで様々な処理を実行させることができる
  • よくあるのは commit した時に事前チェックをおこない、合格しない場合はコミットを失敗させる、である
  • そのフックを効率的に管理するツールが pre-commit
  • 自分のリポジトリに導入すると、行儀のよいファイルをコミットできるようになる
  • pre-commit を導入してルールによって統一されたファイル管理をしようって話

本文はここまで。以下は時間外w

インストールとか

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 以外で同様のツールをおすすめするぜ、があったらください
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?