簡體   English   中英

python pre-commit 工具可以考慮一個子目錄作為項目的基礎嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM