【Git】pre-commitでコミット時にフォーマットする

スポンサーリンク

はじめに

pre-commit について紹介していきます。

pre-commit とは

pre-commit とは、Git でコミットする時に自動でファイルをフォーマットしてくれるツールです。

pre-commit

コミットすると、対象のファイルから空白を削除したり、不要なスペースを削除したりしてくれます。

インストール

brewを使って、pre-commit をインストールできます。

brew install pre-commit

設定

.pre-commit-config.yamlを作成することで、pre-commit でどのような処理をするか設定できます。

下記のコマンドでサンプルの設定を出力できます。

pre-commit sample-config
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v3.2.0
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer
      - id: check-yaml
      - id: check-added-large-files

repoで利用する hook を取ってくるリポジトリを指定し、hooksで利用する hook を指定します。

サポートされている hook は下記にあります。

pre-commit

使い方

.pre-commit-config.yamlを作成したら、下記のコマンドを実行して、hook スクリプトの準備をします。

pre-commit install

これでgit commitすると、pre-commit が hook を実行され、フォーマットしてくれます。

また、git commitで対象となるファイルは更新があったファイルのみですが、全てのファイルに対して実行する場合は下記のコマンドを利用します。

pre-commit run --all-files

yamlfmt と使ってみる

実際に、yamlfmtを pre-commit で使って YAML ファイルをフォーマットしてみます。

yamlfmtについては、下記で紹介しています。

【YAMLフォーマッター】yamlfmt使ってみる
はじめにYAMLのフォーマッターであるyamlfmtについて紹介していきます。yamlfmtとはyamlfmtとは、YAMLのフォーマッターのコマンドラインツール/ライブラリとなっています。yamlfmtを使って、新しいYAMLのフォーマッ...

まずは、.pre-commit-config.yamlを作成します。

repos:
  - repo: https://github.com/google/yamlfmt
    rev: v0.9.0
    hooks:
      - id: yamlfmt

試しに、YAML ファイルを作成して、コミットすると、結果はFailedになり、ファイルが変更されました。

❯ git add .

❯ git commit -m "test pre-commit"
yamlfmt..................................................................Failed
- hook id: yamlfmt
- files were modified by this hook

再度コミットすると、結果がPassedになり、コミットができていることが確認できます。

❯ git add .

❯ git commit -m "test pre-commit"
yamlfmt..................................................................Passed
[main 2236244] test pre-commit
 1 file changed, 28 insertions(+)
 create mode 100644 pre-commit-and-yamlfmt/deployment.yml

参考

タイトルとURLをコピーしました