ing*_*ger 8 python pre-commit.com
我有一个这样的回购协议:
myrepo/
.git
tool1/
src/main.py
tests/test.py
.pre-commit-config.yaml
Run Code Online (Sandbox Code Playgroud)
配置在哪里:
repos:
- repo: local
hooks:
- id: pytest-cov
name: pytest coverage
stages: [push]
language: system
entry: pwd # originally: pytest testtool --cov --cov-fail-under=0
types: [python]
pass_filenames: false
Run Code Online (Sandbox Code Playgroud)
将条目更改为“pwd”只是为了查看预提交上下文中的 basedir 是什么。现在,当我从 myrepo/tool1 目录运行此命令时,pre-commit run --hook-stage=push --verbosepwd 会说“myrepo”,而不是“myrepo/tool1” 。我需要在 tool1 中运行,因为所有路径等都与之相关。
是否有一些设置或其他方法来运行预提交,以便基目录为 myrepo/tool1?或者该项目真的必须位于存储库的根目录中吗?
Ant*_*ile 16
您可以将配置放在您所看到的任何地方,但 git hooks 本身始终从存储库的根目录运行(这就是git工作原理)。每个存储库也只有一组 git hooks,因此 monorepo 的功能对于 git hooks 来说并没有真正的意义
跟踪器上有一些令人感兴趣的问题:预提交/预提交/问题搜索:monorepo
建议是围绕任何有问题的工具编写一个包装器,并cd在需要更改工作目录时使用 - 例如从#1417 开始:
- repo: local
hooks:
- id: go-unit-tests
name: run go test s(go test)
language: system
entry: bash -c 'cd subdir && exec go test ./...'
pass_filenames: false
types: [go]
files: ^subdir/
Run Code Online (Sandbox Code Playgroud)
免责声明:我是预提交的作者