如果前一阶段失败,预提交挂钩将终止

pre-commit hooks terminate if previous stage fails

我正在使用预提交挂钩配置 https://pre-commit.com/ 来启用预提交挂钩

repos:
  - repo: local
    hooks:
      - id: pytest-check
        name: pytest-check
        entry: pytest
        language: system
        pass_filenames: false
        always_run: false
      - id: flake8
        name: flake8
        entry: flake8
        language: python
        types: [python]
        args: ['src/']

如果pytest-check失败,它也会执行flake8钩子。
如果先前的挂钩失败,是否可以终止执行,在这种情况下,如果 pytest-check 失败,flake8 将不会 运行。 我通读了文档,但找不到任何关于此的信息...

您正在寻找 fail_fast: true

可以同时指定at the top level and at the hook level


顺便提一下,您的配置存在一些不相关的问题:

  • ~通常你不想 运行 测试作为 pre-commit 的一部分,它们会很慢,这会让你的用户感到沮丧,并经常导致他们关闭整个东西
  • always_run: false是默认的,不用指定
  • flake8 正如您配置的那样,它既是 double-linting 又是 fork 轰炸(您传递的是 src/ 并且 pre-commit 还传递了文件名,并且您错误地配置了 multiprocessing mode) -- 我建议直接使用 pycqa/flake8 存储库来正确配置
  • 对于 repo: local 钩子没有理由使用 args -- 直接在 entry
  • 中指定它

免责声明:我写了 pre-commit