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

如何创建调用同仓库脚本的pre-commit.com钩子?

解决pre-commit钩子无法调用仓库内脚本的问题

问题原因

使用language: system时,pre-commit会在目标仓库(即你执行try-repo的仓库)的目录下执行命令,而你的my-script.py存放在钩子仓库里,因此找不到文件。

两种可行解决方案

方案1:使用language: script(推荐)

pre-commit内置的script语言专门适配简单可执行脚本场景,会自动处理钩子仓库内的文件路径。

  1. 给my-script.py添加可执行权限:
chmod +x my-script.py
  1. 在my-script.py开头添加shebang,指定Python解释器:
#!/usr/bin/env python
  1. 修改.pre-commit-hooks.yaml配置:
- id: my-check
  name: my-check
  entry: my-script.py
  language: script
  files: '.*'

方案2:使用pre-commit模板变量(适配language: system)

pre-commit支持模板变量{{ repo }},它会被替换为钩子仓库的绝对路径,直接修改配置即可:

- id: my-check
  name: my-check
  entry: python
  args: ["{{ repo }}/my-script.py"]
  language: system
  files: '.*'

说明

上述两种方案都不需要像pre-commit-hooks仓库那样做安装配置,完全适配你简单脚本的使用场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:39:57