如何解决使用pre-commit,如何在提交之前使用某些挂钩,在推送之前使用其他挂钩
某些挂钩可能需要一段时间才能运行,我想在推送之前运行它们,但是不要在每次特定提交之前运行(例如,pylint可能会有点慢)。
我看过以下内容:
- Question: Using hooks at different stages
- mesos-commits mailing list archives
- Feature request: pre-commit or pre-push only hooks
但是仍然不清楚我应该如何设置它。
这是我尝试过的:
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')
当然不是用黑色格式化的。
解决方法
您的配置是正确的,除了pre-commit/pre-commit-hooks
set stages
themselves中的空格钩之外,这样它们就不会受到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-commit
和pre-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
请注意,第二个命令直接来自the documentation on using pre-push
免责声明:我是pre-commit和pre-commit-hooks的作者
,编辑:我没有注意到您使用的是称为预提交的第三方软件包 相反,我认为您正在使用内置的预提交钩子中的git。
看着您的配置似乎是正确的,可能会错过一件事,因为我在评论中说,请确保已安装预推式:
$ pre-commit install --hook-type pre-push
如果您想使用钩子内置的git:
https://git-scm.com/docs/githooks#_pre_push
使用预推钩
在您的.git/hooks
$ touch pre-push
然后放上钩子。
非常简单。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。