pre-commit
是一个用于构建和运行git hook的框架。有关更多信息,请参阅官方文档:pre-commit.com
本文档提供了由Poetry提供的可用预提交钩子列表。
注意:
1.如果在您的
.pre-commit-config.yaml
中为钩子指定了args:
,则默认值将被覆盖。如果您使用args:
,则必须完全指定您的钩子的所有参数。2.如果
pyproject.toml
文件不在根目录中,您可以指定args: ["-C", "./subdirectory"]
。
poetry-check
钩子用于运行poetry check
命令,该命令用于检查poetry
项目的配置文件是否处于正确的状态。它可以帮助确保项目的依赖和其他配置符合规范,并且不会因为提交到版本控制系统中而导致项目的错误状态。
这个钩子接受与poetry
命令相同的参数。有关更多信息,请参阅poetry check
命令的文档。
这个钩子会在提交更改时调用 poetry lock
命令,以确保锁定文件处于最新状态。
这个钩子接受与 poetry
命令相同的参数。有关更多信息,请参阅 lock
命令。
这个钩子调用 poetry export
命令来将你当前的依赖项同步到 requirements.txt 文件中。
注意:
1.该钩子由 Export Poetry 插件提供。
2.建议在运行此钩子之前运行 poetry-lock 钩子。
该钩子接受与 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
命令,以确保所有锁定的包都被安装。要安装此钩子,您可以指定 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
一个适用于 monorepo 设置或者 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自动更新可能不会更新到最新版本的原因?
pre-commit autoupdate会将您在.pre-commit-config.yaml中定义的每个存储库的修订版本更新到默认分支中最新可用的标签。
Poetry遵循一种分支策略,其中默认分支是活跃的开发分支,并且修复程序被回溯到稳定分支。新的标签是在这些稳定分支中分配的。
pre-commit不支持这样的分支策略,并且决定不实现一个选项,无论是在用户端还是在钩子作者端,来定义查找最新可用标签的分支。
因此,pre-commit autoupdate对于这里描述的钩子不可用。
您可以通过使用--repo参数(可以多次指定)来避免将修订版本更改为意外值,以明确列出应更新的存储库。不会将一个用于明确排除存储库的选项实现到pre-commit中。