pre-commitフック
pre-commitフック #
pre-commitは、gitフックを構築および実行するためのフレームワークです。詳細については、公式ドキュメントを参照してください:pre-commit.com
このドキュメントでは、Poetryによって提供される利用可能なpre-commitフックの一覧を示します。
poetry-check #
`poetry-check`フックは`poetry check`コマンドを呼び出して、Poetryの設定が壊れた状態でコミットされないようにします。
引数 #
このフックは、poetryコマンドと同じ引数を取ります。詳細については、checkコマンドを参照してください。
poetry-lock #
`poetry-lock`フックは`poetry lock`コマンドを呼び出して、変更をコミットする際にロックファイルが最新の状態であることを確認します。
引数 #
このフックは、poetryコマンドと同じ引数を取ります。詳細については、lockコマンドを参照してください。
poetry-export #
`poetry-export`フックは`poetry export`コマンドを呼び出して、`requirements.txt`ファイルを現在の依存関係と同期します。
引数 #
このフックは、poetryコマンドと同じ引数を取ります。詳細については、exportコマンドを参照してください。
デフォルトの引数は`args: ["-f", "requirements.txt", "-o", "requirements.txt"]`で、これにより現在の作業ディレクトリに`requirements.txt`ファイルが作成/更新されます。
コンソールに出力するには、` .pre-commit-config.yaml`に`verbose: true`を追加できます。
hooks:
- id: poetry-export
args: ["-f", "requirements.txt"]
verbose: true
また、`requirements.txt`にdev依存関係を書き込むには、`--dev`を`args`に追加できます。
hooks:
- id: poetry-export
args: ["--dev", "-f", "requirements.txt", "-o", "requirements.txt"]
poetry-install #
`poetry-install`フックは`poetry install`コマンドを呼び出して、すべてのロックされたパッケージがインストールされていることを確認します。このフックをインストールするには、`default_install_hook_types`を指定するか、`pre-commit install --install-hooks -t post-checkout -t post-merge`を使用してインストールする必要があります。
引数 #
このフックは、poetryコマンドと同じ引数を取ります。詳細については、installコマンドを参照してください。
使用方法 #
pre-commitの使用方法の詳細については、公式ドキュメントを参照してください。
最小限の`.pre-commit-config.yaml`の例
repos:
- repo: https://github.com/python-poetry/poetry
rev: '' # add version here
hooks:
- id: poetry-check
- id: poetry-lock
- id: poetry-export
- id: poetry-install
モノレポの設定用、または`pyproject.toml`ファイルがルートディレクトリにない場合の`.pre-commit-config.yaml`の例
repos:
- repo: https://github.com/python-poetry/poetry
rev: '' # add version here
hooks:
- id: poetry-check
args: ["-C", "./subdirectory"]
- id: poetry-lock
args: ["-C", "./subdirectory"]
- id: poetry-export
args: ["-C", "./subdirectory", "-f", "requirements.txt", "-o", "./subdirectory/requirements.txt"]
- id: poetry-install
args: ["-C", "./subdirectory"]
よくある質問(FAQ) #
なぜ`pre-commit autoupdate`は最新バージョンにアップデートされないのですか? #
`pre-commit autoupdate`は、`.pre-commit-config.yaml`で定義されている各リポジトリの`rev`を、デフォルトブランチで利用可能な最新のタグに更新します。
Poetryは、デフォルトブランチがアクティブな開発ブランチであり、修正が安定ブランチにバックポートされ、これらの安定ブランチに新しいタグが割り当てられるというブランチ戦略に従っています。
`pre-commit`はこのようなブランチ戦略をサポートしておらず、ユーザー側またはフック作成者側で、最新のタグを検索するためのブランチを定義するオプションを実装しないことを決定しています。
そのため、ここで説明されているフックでは`pre-commit autoupdate`を使用できません。
`--repo`パラメーター(複数回指定可能)を使用して、更新する必要があるリポジトリを明示的にリストすることにより、`rev`が予期しない値に変更されるのを防ぐことができます。リポジトリを明示的に除外するオプションは`pre-commit`には実装されません。