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 中。