[英]Can the python pre-commit tool consider a subdirectory as a base of the project?
我有一個這樣的回購:
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 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/
免責聲明:我是 pre-commit 的作者
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.