🔒
pre-commit で git-secrets を実行する
はじめに
pre-commit 導入済みの環境に git-secrets を入れようとしたところ少しハマったのでメモを残します。
問題
pre-commit が導入された環境に新たに git-secrets を導入しようと思いました。
公式のドキュメントに従ってインストールを進めると、すでに pre-commit が存在するため git secrets --install
に失敗します。
$ git secrets --install
Installed commit-msg hook to .git/hooks/commit-msg
.git/hooks/pre-commit already exists. Use -f to force
メッセージには -f
を使えと書いてありますが -f
でインストールするとプロジェクトの pre-commit 設定が壊れるので避けたいです。
解決策
.pre-commit-config.yaml
に記載を追記します
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
hooks:
- id: check-added-large-files
- id: check-json
- id: check-merge-conflict
- id: check-toml
- id: check-xml
- id: check-yaml
- id: debug-statements
- id: detect-private-key
- id: end-of-file-fixer
- id: fix-byte-order-marker
- id: trailing-whitespace
- repo: local
hooks:
- id: git-secrets
name: git secrets
entry: git secrets --scan
language: system
types: [text]
これでいつも通りコミットすれば git-secrets が hook で実行されるようになります。
終わりに
良いインテグレーション方法があるかもしれませんがぱっと試した限りでは分からなかったので、ローカルのコマンドを実行する方法を採用しました。
この構文自体は任意のコマンドを pre-commit の hook に追加したいときにも使えるので汎用性がありそうです。
参考
Discussion