【问题标题】:pre-commit for local hook gives error: "unrecognized arguments: .pre-commit-config.yaml"本地挂钩的预提交给出错误:“无法识别的参数:.pre-commit-config.yaml”
【发布时间】:2020-09-23 21:16:06
【问题描述】:

我在pre-commit 文件.pre-commit-config.yaml 中有以下回购

-   repo: local
    hooks:
    -   id: check_pip
        name: Check pip file
        description: This hook checks if requirements-dev.txt is up to date.
        language: system
        entry: python -m scripts.check_pip_requirements
        args: ["--compare"]

但它一直给我错误:

错误:无法识别的参数:.pre-commit-config.yaml

因为它将文件名作为参数传递给我的 python 脚本。我怎样才能防止这种情况发生?

【问题讨论】:

    标签: continuous-integration pre-commit-hook pre-commit pre-commit.com


    【解决方案1】:

    稍微清理一下您的示例 - 并使用 files 仅在必要的文件更改时运行:

    -   repo: local
        hooks:
        -   id: check_pip
            name: Check pip file
            description: This hook checks if requirements-dev.txt is up to date.
            language: system
            entry: python -m scripts.check_pip_requirements --compare
            files: ^requirements-dev.txt$
            pass_filenames: false
    

    请注意,我做了几件事:

    • argslocal 钩子没有意义,你可以把它放在 entry
    • pass_filenames(和你一样)——pre-commit 是一个基于将文件名传递给可执行文件的框架,但你可以关闭它
    • files:这将使钩子只有在 requirements-dev.txt 发生变化时才会被触发

    或者(如果您希望 requirements-dev.txt 之外的更改需要运行此挂钩)您可以删除 files 并使用 always_run: true


    免责声明:我是 pre-commit 的作者

    【讨论】:

    • 原始脚本从 conda environment.yml 创建 requirements-dev.txt。那么将^environment.yml$ 放入files 是否有意义?因为我们要检查environment.yml变化时用户需求是否更新,这是领先的。
    【解决方案2】:

    我花了很长时间弄清楚是什么原因造成的,以及如何解决这个问题。它没有很好地记录,最终我通过反复试验修复了它。我们必须在我们的钩子中使用pass_filenames: false

    -   repo: local
        hooks:
        -   id: check_pip
            name: Check pip file
            description: This hook checks if requirements-dev.txt is up to date.
            language: system
            entry: python -m scripts.check_pip_requirements
            pass_filenames: false
            args: ["--compare"]
    

    【讨论】:

    猜你喜欢
    • 2021-12-18
    • 1970-01-01
    • 2020-09-11
    • 2022-01-02
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    相关资源
    最近更新 更多