微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用pre-commit,如何在提交之前使用某些挂钩,在推送之前使用其他挂钩

如何解决使用pre-commit,如何在提交之前使用某些挂钩,在推送之前使用其他挂钩

某些挂钩可能需要一段时间才能运行,我想在推送之前运行它们,但是不要在每次特定提交之前运行(例如,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')

当然不是用黑色格式化的。

解决方法

您的配置是正确的,除了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-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

请注意,第二个命令直接来自the documentation on using pre-push


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

,

编辑:我没有注意到您使用的是称为预提交的第三方软件包 相反,我认为您正在使用内置的预提交钩子中的git。

预提交
https://pre-commit.com/

看着您的配置似乎是正确的,可能会错过一件事,因为我在评论中说,请确保已安装预推式:

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

如果您想使用钩子内置的git:

https://git-scm.com/docs/githooks#_pre_push

使用预推钩

在您的.git/hooks

内部
$ touch pre-push 

然后放上钩子。

非常简单。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。