5

有些钩子可能需要一段时间才能运行,我想在推送之前运行它们,但不是在每次特定提交之前运行(例如,pylint 可能有点慢)。

我看过以下内容:

但目前还不清楚我应该如何设置它。

这是我尝试过的:

default_stages: [commit]
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v3.1.0
    hooks:
      - id: end-of-file-fixer
      - id: trailing-whitespace
  - repo: https://github.com/psf/black
    rev: 19.10b0
    hooks:
      - id: black
        stages: [push]

从那我期待前几个钩子在提交之前运行(他们这样做),但我期待黑色在推送之前运行,但事实并非如此。

为了测试我创建了以下文件:

"""This is a docstring."""

print('this should be formatted')

这肯定不是被黑色格式化的。

4

1 回答 1

9

您的配置是正确的,除了pre-commit/pre-commit-hooks setstages本身中的空白挂钩,因此它们不会受到影响default_stages

稍微调整你的配置:

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v3.1.0
    hooks:
      - id: end-of-file-fixer
        stages: [commit]
      - id: trailing-whitespace
        stages: [commit]
  - repo: https://github.com/psf/black
    rev: 19.10b0
    hooks:
      - id: black
        stages: [push]

接下来,您需要确保安装了两个钩子脚本

您可以使用以下命令同时安装pre-commitpre-push提交:

pre-commit install --hook-type pre-commit --hook-type pre-push

或者您可以单独运行它们:

pre-commit install  # installs .git/hooks/pre-commit
pre-commit install --hook-type pre-push  # installs .git/hooks/pre-push

请注意,第二个命令直接来自有关使用 pre-push 的文档


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

于 2020-09-10T01:44:03.550 回答