Skip to content

Latest commit

 

History

History
117 lines (78 loc) · 4.36 KB

13.pre-commit hooks.md

File metadata and controls

117 lines (78 loc) · 4.36 KB

pre-commit hooks

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 check命令,该命令用于检查poetry项目的配置文件是否处于正确的状态。它可以帮助确保项目的依赖和其他配置符合规范,并且不会因为提交到版本控制系统中而导致项目的错误状态。

参数

这个钩子接受与poetry命令相同的参数。有关更多信息,请参阅poetry check命令的文档。

二.poetry-lock

这个钩子会在提交更改时调用 poetry lock 命令,以确保锁定文件处于最新状态。

参数

这个钩子接受与 poetry 命令相同的参数。有关更多信息,请参阅 lock 命令。

三.poetry-export

这个钩子调用 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

这个钩子调用了 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"]

六.FAQ

pre-commit自动更新可能不会更新到最新版本的原因?

pre-commit autoupdate会将您在.pre-commit-config.yaml中定义的每个存储库的修订版本更新到默认分支中最新可用的标签。

Poetry遵循一种分支策略,其中默认分支是活跃的开发分支,并且修复程序被回溯到稳定分支。新的标签是在这些稳定分支中分配的。

pre-commit不支持这样的分支策略,并且决定不实现一个选项,无论是在用户端还是在钩子作者端,来定义查找最新可用标签的分支。

因此,pre-commit autoupdate对于这里描述的钩子不可用。

您可以通过使用--repo参数(可以多次指定)来避免将修订版本更改为意外值,以明确列出应更新的存储库。不会将一个用于明确排除存储库的选项实现到pre-commit中。