pre-commit 钩子
pre-commit 钩子 #
pre-commit 是一个用于构建和运行 git 钩子 的框架。有关更多信息,请参阅官方文档:pre-commit.com
本文档提供 Poetry 提供的可用 pre-commit 钩子的列表。
.pre-commit-config.yaml
中为钩子指定了 args:
,则默认值将被覆盖。如果您使用 args:
,则必须为钩子完全指定所有参数。pyproject.toml
文件不在根目录中,您可以指定 args: ["-C", "./subdirectory"]
。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
此外,可以将 --dev
添加到 args
以将开发依赖项写入 requirements.txt
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"]
常见问题解答 #
为什么 pre-commit autoupdate
无法更新到最新版本? #
pre-commit autoupdate
将 .pre-commit-config.yaml
中定义的每个仓库的 rev
更新到默认分支中最新的可用标签。
Poetry 遵循一种分支策略,其中默认分支是活动开发分支,修复会被移植到稳定分支。新的标签将分配到这些稳定分支中。
pre-commit
不支持这种分支策略,并且已决定不在 用户端 或 钩子作者端 实现一个选项来定义一个分支用于查找最新的可用标签。
因此,pre-commit autoupdate
无法用于此处描述的钩子。
您可以通过使用 --repo
参数(可以多次指定)来避免将 rev
更改为意外的值,以明确列出应更新的仓库。明确排除仓库的选项 将不会被实现 到 pre-commit
中。