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 文件与当前依赖项同步。

警告
此钩子由 Export Poetry Plugin 提供。
注意
建议在运行此钩子之前运行 poetry-lock 钩子或 poetry-check,并使用参数 --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 #

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