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

如何使设置pass_filenames:true的pre-commit钩子仅执行一次并传入所有文件名?

问题解答

可以实现钩子仅调用一次并传入所有文件名的需求,你当前的配置缺少了关键的批量处理参数。

问题原因

pre-commit 默认会将匹配的文件分成多个批次传递给钩子(主要是为了避免命令行参数过长的问题),这就是11个文件触发三次调用的原因。

解决方案

在钩子配置中添加 batch: true 字段,强制pre-commit将所有匹配的文件一次性作为参数传递给钩子脚本:

repos:
  - repo: local
    hooks:
      - id: ruff-format
        name: ruff-format
        entry: "bin/ruff-format"
        language: script
        pass_filenames: true
        batch: true  # 开启批量传递所有文件
        files: "src/python/|test/python/"
        types: [python]

额外注意事项

  • 确保你的 bin/ruff-format 脚本能够正确处理多个文件名参数(比如遍历所有传入的参数执行格式化逻辑)。
  • 若文件数量极多(远超11个)导致命令行参数长度超出系统限制,pre-commit 仍会自动分批,但这种情况在当前场景下不会出现。

内容的提问来源于stack exchange,提问作者Zranz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 00:07:09