问题描述
我在 pre-commit 和 black 方面遇到问题。
一切正常,直到我用 pre-commit clean
清除了缓存。现在我总是收到错误
钩子 black
需要预提交版本 2.9.2,但已安装版本 2.6.0。也许运行`pip install --upgrade pre-commit
如果我检查我的版本,我运行的是最新的预提交版本 (v2.12.1)。此外,如果我运行推荐的命令,则不会发生任何变化,并且会出现相同的错误。如果我停用 black
钩子,错误就会消失,所以我至少知道这是黑色的问题。
我尝试将黑色版本从 stable
更改为最新版本,但没有任何帮助。
有什么想法可以解决这个问题吗?
我的预提交配置:
- repo: https://github.com/ambv/black
rev: stable
hooks:
- id: black
language_version: python3.8
exclude: |
(?x)(
migrations/|
config/|
_build/|
buck-out/|
build/|
dist/
)
非常感谢您的帮助
解决方法
rev: stable
不是受支持的配置 -- 当您运行时,您还会收到一条警告,准确地告诉您:
$ pre-commit run black --all-files
[WARNING] The 'rev' field of repo 'https://github.com/ambv/black' appears to be a mutable reference
(moving tag / branch). Mutable references are never updated after first install and are not
supported. See https://pre-commit.com/#using-the-latest-version-for-a-repository for more details.
Hint: `pre-commit autoupdate` often fixes this.
...
警告还告诉您这样做的基本原理并解释您看到的行为:首次安装后永远不会更新可变引用 - 所以您的缓存中的版本来自旧版本的黑色当你清除它时,它会更新到最新的
最新版本的 black 在其定义中使用 types_or
,这需要更新版本的 pre-commit
顺便说一句,您的 exclude
没有做您想做的事 -- pre-commit
仅在签入存储库的文件上运行,因此排除了 dist
和 {{1} 之类的内容} 没有必要
要修复您看到的实际错误消息,请确保 _build
(如果您从第一次移动到安装了 pre-commit 的位置,还可能使用 pip install --upgrade pre-commit
time) -- pre-commit install
可以帮助您定位所有安装
免责声明:我是 pre-commit 的创建者