pre-commit for local hook gives error: "unrecognized arguments: .pre-commit-config.yaml"
pre-commit for local hook gives error: "unrecognized arguments: .pre-commit-config.yaml"
我在 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"]
但它一直给我错误:
error: unrecognized arguments: .pre-commit-config.yaml
因为它将文件名作为参数传递给我的 python 脚本。我该如何防止这种情况?
我花了很多时间来弄清楚是什么原因造成的,以及如何解决这个问题。它没有很好地记录,最终我通过反复试验修复了它。我们必须在钩子中使用 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"]
稍微清理一下您的示例 - 并在必要的文件更改时使用 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
请注意,我做了几件事:
args
对于 local
钩子没有意义,你可以把它放在 entry
pass_filenames
(就像你所做的那样)——pre-commit
是一个基于将文件名传递给可执行文件的框架,但你可以将其关闭
files
:这将使挂钩仅在 requirements-dev.txt
更改时触发
或者(如果您希望 requirements-dev.txt
之外的更改需要 运行 这个钩子)您可以删除 files
并使用 always_run: true
免责声明:我是 pre-commit
的作者
我在 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"]
但它一直给我错误:
error: unrecognized arguments: .pre-commit-config.yaml
因为它将文件名作为参数传递给我的 python 脚本。我该如何防止这种情况?
我花了很多时间来弄清楚是什么原因造成的,以及如何解决这个问题。它没有很好地记录,最终我通过反复试验修复了它。我们必须在钩子中使用 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"]
稍微清理一下您的示例 - 并在必要的文件更改时使用 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
请注意,我做了几件事:
args
对于local
钩子没有意义,你可以把它放在entry
pass_filenames
(就像你所做的那样)——pre-commit
是一个基于将文件名传递给可执行文件的框架,但你可以将其关闭files
:这将使挂钩仅在requirements-dev.txt
更改时触发
或者(如果您希望 requirements-dev.txt
之外的更改需要 运行 这个钩子)您可以删除 files
并使用 always_run: true
免责声明:我是 pre-commit
的作者