👀

pre-commitによる各Git Hooksの設定

2024/11/07に公開

pre-commitとは?

pre-commitは、Pythonで書かれたGit Hooks設定ツールです。
簡単な手順でGit Hooksを設定することができます。

インストール

pip install pre-commit

設定ファイル作成

.pre-commit-config.yamlを作成し、次のような設定を記述します。

.pre-commit-config.yaml
repos:
-   repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v2.3.0
    hooks:
    -   id: check-yaml
    -   id: end-of-file-fixer
    -   id: trailing-whitespace
-   repo: https://github.com/psf/black
    rev: 22.10.0
    hooks:
    -   id: black

設定適用

pre-commit install

これだけで、pre-commitのGit Hooksが動くようになります。
初回動作時はインストールが走るので、少しだけ実行に時間がかかります。

pre-commit以外のGit Hooksを設定する

名前のとおり、このライブラリはpre-commitの設定をデフォルトとしています。
pre-commit以外のGit Hooksを設定する場合は、別途指定が必要です。

サポート対象のGit Hooks一覧

公式ドキュメントによると、次のGit Hooksをサポートしています。

  • commit-msg
  • post-checkout
  • post-commit
  • post-merge
  • post-rewrite
  • pre-commit
  • pre-merge-commit
  • pre-push
  • pre-rebase
  • prepare-commit-msg

設定ファイルの更新

今回はpre-pushのGit Hooksを設定していきます。
まずはpre-pushの対象にstagesを追加します。

.pre-commit-config.yaml
-   repo: https://github.com/psf/black
    rev: 22.10.0
    hooks:
    -   id: black
        stages: [pre-push]

複数のGit Hooksで動かしたい場合は、配列に複数の値を指定します。

    stages: [pre-commit, pre-push]

設定の適用

設定を適用するときにも、対象のGit Hooksを指定します。

pre-commit install -t pre-push

複数のGit Hooksを指定している場合、それぞれに対してコマンドを実行する必要があります。
例として、下記ではpre-commitとpre-pushを適用しています。

pre-commit install
pre-commit install -t pre-push
NCDCエンジニアブログ

Discussion