gpt4 book ai didi

python - python pre-commit 工具是否可以将子目录视为项目的基础?

转载 作者:行者123 更新时间:2023-12-05 01:09:53 25 4
gpt4 key购买 nike

我有一个这样的 repo :

myrepo/
.git
tool1/
src/main.py
tests/test.py
.pre-commit-config.yaml

配置在哪里:

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

将条目更改为 'pwd' 只是为了查看 basedir 在预提交的上下文中是什么......现在,当我从 myrepo/tool1 目录运行它时,通过 pre-commit run --hook-stage=push --verbose,pwd 会说“myrepo”,而不是“myrepo/tool1” .我需要在 tool1 中运行,因为所有路径等都是相对的。

是否有一些设置或其他方式来运行预提交,以便基本目录是 myrepo/tool1?还是该项目真的必须存在于 repo 的根目录中?

最佳答案

您可以将配置放在任何地方,如您所见,但 git Hook 本身总是从存储库的根目录运行(这就是 git 的工作方式)。每个存储库也只有一组 git 钩子(Hook),因此 monorepo 的功能对 git 钩子(Hook)没有意义

跟踪器上存在一些令人感兴趣的问题:pre-commit/pre-commit/issues search:monorepo

建议为任何相关工具编写一个包装器,如果您需要更改工作目录(例如从 #1417 更改),请使用 cd :

-   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/

免责声明:我是 pre-commit 的作者

关于python - python pre-commit 工具是否可以将子目录视为项目的基础?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64773189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com