【问题标题】:Run pre-commit hook on all pushed files对所有推送的文件运行预提交挂钩
【发布时间】:2021-09-19 16:47:36
【问题描述】:

我设置的基本版本是让 pre-commit 运行代码 linter。但是,当它检查/拒绝单个提交时,我发现它太长/不方便,相反,我想在尝试将代码推送到远程/ CI 时运行它。我发现我可以配置阶段,所以我决定只将推送阶段作为所有钩子的默认设置。然而,它最终只是让非 linted 代码被推送。也许是因为它无法将此代码识别为“已更改”,因为它在所有文件的子集上运行?

这是我的预提交配置:

default_stages: [push]
repos:
-   repo: https://github.com/ambv/black
    rev: 19.10b0
    hooks:
    - id: black
      language_version: python3

如果技术上不可能只在我通过此推送更改的文件上运行它,我可以以某种方式在所有文件上运行它吗?

【问题讨论】:

    标签: git pre-commit-hook pre-commit pre-commit.com


    【解决方案1】:

    您需要确保 install 预先提交您正在使用的任何阶段

    例如来自pre-commit during push 文档:

    要在预提交中使用预推送挂钩,请运行:

    $ pre-commit install --hook-type pre-push
    pre-commit installed at .git/hooks/pre-push
    

    免责声明:我创建了预提交

    【讨论】:

    • 我很惊讶默认情况下它没有安装在那里,因为配置决定是否有任何事情要做。感谢您的解释。
    • 您设置的default_stages 仅覆盖未明确设置stages 的工具(as documented
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 2019-07-08
    • 2014-01-03
    • 2021-09-10
    • 1970-01-01
    • 2011-07-02
    • 2022-12-15
    相关资源
    最近更新 更多