挂钩“black”需要预提交版本 2.9.2,但已安装版本 2.6.0

sha*_*dow 7 python git pre-commit pre-commit-hook pre-commit.com

我在预提交和黑色方面遇到了麻烦。

一切工作正常,直到我用 清除缓存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/
          )
Run Code Online (Sandbox Code Playgroud)

非常感谢帮助

Ant*_*ile 17

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.
...
Run Code Online (Sandbox Code Playgroud)

该警告还告诉您这样做的基本原理,并解释了您所看到的行为:可变引用在首次安装后永远不会更新- 因此缓存中的版本来自旧版本的 black,当您清除它时,它已更新为最新的

最新版本的黑色types_or在其定义中使用,这需要更新版本的pre-commit

顺便说一句,你exclude没有做你想做的事——pre-commit只在签入存储库的文件上运行,因此排除诸如dist和 之类的东西_build是不必要的

要修复您看到的实际错误消息,请确保pip install --upgrade pre-commitpre-commit install如果您已经移动了第一次安装预提交的位置,则可能需要重置 git hook)——which -a pre-commit可以帮助您找到所有安装


免责声明:我是预提交的创建者