bax*_*axx 17 python git pre-commit pre-commit-hook pre-commit.com
有些钩子可能需要一段时间才能运行,我想在推送之前运行它们,但不是在每次特定提交之前运行(例如,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]
Run Code Online (Sandbox Code Playgroud)
由此,我期望前几个钩子在提交之前运行(它们确实如此),但我期望黑色在推送之前运行,但事实并非如此。
为了测试我是否创建了以下文件:
"""This is a docstring."""
print('this should be formatted')
Run Code Online (Sandbox Code Playgroud)
这肯定不是被黑色格式化的。
Ant*_*ile 29
您的配置是正确的,除了pre-commit/pre-commit-hooks 设置stages自己的空白挂钩,这样它们就不会受到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]
Run Code Online (Sandbox Code Playgroud)
接下来您需要确保两个钩子脚本都已安装
您可以使用以下命令同时安装pre-commit和提交:pre-push
pre-commit install --hook-type pre-commit --hook-type pre-push
Run Code Online (Sandbox Code Playgroud)
或者您可以单独运行它们:
pre-commit install --hook-type pre-commit --hook-type pre-push
Run Code Online (Sandbox Code Playgroud)
请注意,第二个命令直接来自使用预推送的文档
免责声明:我是 pre-commit 和 pre-commit-hooks 的作者