删除本地钩子目录并清理缓存后pre-commit仍可执行本地钩子的问题咨询
删除本地钩子目录并清理缓存后pre-commit仍可执行本地钩子的问题咨询
我正在用pre-commit管理仓库的本地钩子。最开始我添加了一个存放钩子的本地仓库,还配置了.pre-commit-config.yaml文件来引用这些钩子,不管是本地环境还是CI流水线都运行得很完美。
下面是.pre-commit-config.yaml的代码片段,我已经把pre_commit_hooks安装成了本地模块:
- repo: local hooks: - id: trailing-whitespace name: Trim trailing-whitespace language: python entry: python3 -m pre_commit_hooks.trailing_whitespace_fixer additional_dependencies: [pre_commit_hooks]
不过我发现了一个奇怪的现象:
- 就算我删掉存放钩子的目录(也就是包含钩子文件的仓库),pre-commit还是能成功运行这些钩子。
- 我试过用
pre-commit clean清理缓存,甚至手动删掉缓存文件夹(比如~/.cache/pre-commit/),但钩子依然能正常运行。
我完全搞不懂,为什么源目录都删了,pre-commit还能找到并执行这些钩子。
我的问题是:
- 源目录删除后,pre-commit是怎么找到并执行钩子的?
- 我要怎么做才能确保源目录删除后,pre-commit就不再运行这些钩子?
我已经尝试过的操作:
- 清理Pre-Commit缓存:
- 运行了
pre-commit clean,还手动删除了缓存目录(比如~/.cache/pre-commit)。 - 确认缓存目录已经是空的。
- 运行了
- 删除Git Hooks:
- 检查了
.git/hooks/目录下的残留脚本,删掉了pre-commit脚本。
- 检查了
- 验证配置文件:
- 临时移除了
.pre-commit-config.yaml文件,不出所料pre-commit运行失败了。
- 临时移除了
- 检查Pre-Commit的运行行为:
- 运行
pre-commit run --verbose来追踪执行过程,但没找到关于钩子来源的有用信息。
- 运行
备注:内容来源于stack exchange,提问作者Jaydubz
相关产品推荐
相关产品推荐

