You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置pre-commit在前序钩子执行失败时终止后续钩子运行?

pre-commit 顺序执行钩子配置方案

pre-commit原生支持该需求,可通过以下两种方式实现:

方案1:全局快速失败配置(推荐,适配绝大多数场景)

在pre-commit-config.yml的顶层添加fail_fast: true配置即可,该配置的作用为:任意钩子执行失败时立刻终止整个pre-commit流程,不会运行后续钩子。
你遇到的格式化钩子修改文件后返回非0退出码属于pre-commit格式化类钩子的标准行为(提示用户文件已被修改,需重新暂存提交),配置该参数后会直接终止流程,不会运行后续的pytest钩子,避免无意义的耗时。
配置示例如下:

fail_fast: true
repos:
  - repo: <格式化钩子对应的仓库地址>
    rev: <对应版本号>
    hooks:
      - id: <格式化钩子id,例如black、prettier等>
  - repo: <pytest钩子对应的仓库地址/本地钩子配置>
    hooks:
      - id: pytest
        # 你的pytest钩子原有配置保持不变

方案2:局部钩子依赖配置(适合不需要全局开启快速失败的场景)

如果你还有其他钩子需要即使前置钩子失败也要运行,可以将两个钩子的执行逻辑封装为同一个本地钩子,按顺序执行,只有前一步返回码为0时才执行后续步骤:

repos:
  - repo: local
    hooks:
      - id: format-and-test
        name: 格式化 + 单测执行
        entry: bash -c 'pre-commit run <格式化钩子id> --files "$@" && pytest' --
        language: system
        pass_filenames: true
        # 其他参数按需配置即可

补充说明

配置上述方案后可完全规避pytest重复执行的问题,提交阶段耗时可降低约50%。

内容的提问来源于stack exchange,提问作者Mark C.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 17:57:03