Continuous integration 本地钩子的预提交给出错误:";无法识别的参数:.pre-commit config.yaml";

Continuous integration 本地钩子的预提交给出错误:";无法识别的参数:.pre-commit config.yaml";,continuous-integration,pre-commit-hook,pre-commit,pre-commit.com,Continuous Integration,Pre Commit Hook,Pre Commit,Pre Commit.com,我在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

我在
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脚本。我怎样才能防止这种情况发生?

我花了相当长的时间来弄清楚是什么导致了这种情况,以及如何解决这种情况。它没有很好的文档记录,最终我通过尝试和错误修复了它。我们必须在钩子中使用
pass\u filenames:false

-回购协议:本地
挂钩:
-id:check_pip
名称:检查pip文件
描述:这个钩子检查requirements-dev.txt是否是最新的。
语言:系统
条目:python-m scripts.check\u pip\u需求
传递文件名:false
args:[“--compare”]

我花了相当长的时间弄清楚这是什么原因以及如何解决这一问题。它没有很好的文档记录,最终我通过尝试和错误修复了它。我们必须在钩子中使用
pass\u filenames:false

-回购协议:本地
挂钩:
-id:check_pip
名称:检查pip文件
描述:这个钩子检查requirements-dev.txt是否是最新的。
语言:系统
条目:python-m scripts.check\u pip\u需求
传递文件名:false
args:[“--compare”]

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

-回购协议:本地
挂钩:
-id:check_pip
名称:检查pip文件
描述:这个钩子检查requirements-dev.txt是否是最新的。
语言:系统
条目:python-m scripts.check\u pip\u需求——比较
文件:^requirements-dev.txt$
传递文件名:false
请注意,我做了几件事:

  • args
    对于
    local
    钩子没有意义,你可以把它放在
    entry
  • pass\u filenames
    (正如您所做的)pre-commit是一个基于将文件名传递给可执行文件的框架,但您可以将其关闭
  • files
    :这将使钩子仅在
    requirements-dev.txt
    更改时才会触发
或者(如果您希望在
requirements-dev.txt
之外的更改需要运行此挂钩),您可以删除
文件
并使用



免责声明:我是pre-commit的作者,旨在稍微整理一下您的示例,并使用
文件
仅在必要的文件更改时运行:

-回购协议:本地
挂钩:
-id:check_pip
名称:检查pip文件
描述:这个钩子检查requirements-dev.txt是否是最新的。
语言:系统
条目:python-m scripts.check\u pip\u需求——比较
文件:^requirements-dev.txt$
传递文件名:false
请注意,我做了几件事:

  • args
    对于
    local
    钩子没有意义,你可以把它放在
    entry
  • pass\u filenames
    (正如您所做的)
pre-commit
是一个基于将文件名传递给可执行文件的框架,但您可以将其关闭
  • files
    :这将使钩子仅在
    requirements-dev.txt
    更改时才会触发
  • 或者(如果您希望在
    requirements-dev.txt
    之外的更改需要运行此挂钩),您可以删除
    文件
    并使用



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

    如果你能改进文档,那就太好了--,一定会的,谢谢你更新的答案和解释。提交了@anthonysottile如果你能改进文档,那就太好了--,一定会的,感谢更新的答案和解释。提交了@anthonysottile原始脚本从conda
    environment.yml创建
    requirements-dev.txt
    。因此,将:
    ^environment.yml$
    放在
    文件中有意义吗?因为我们想检查用户需求是否在
    environment.yml
    更改时更新,这是前导。原始脚本从conda
    environment.yml
    创建
    requirements-dev.txt
    。因此,将:
    ^environment.yml$
    放在
    文件中有意义吗?因为我们想检查当
    environment.yml
    改变时,用户需求是否被更新,这是最重要的。