【问题标题】:Where we might need pre-commit and pre-push hooks together to lint our code我们可能需要 pre-commit 和 pre-push 钩子来整理我们的代码
【发布时间】:2020-07-20 02:28:42
【问题描述】:

假设我们的项目中有 linter。我有一个预提交钩子,它将对我的项目进行 lint,如果 lint 通过且没有错误,它将提交。我想设置一个 pre-push 挂钩来在推送时对我的项目进行 lint。但我看不出在推送时这样做有什么意义,因为代码在提交时已经被 linted。那么,谁能给我指出一个已经有预提交链接的情况下,预推送 lint 是必要的吗?

【问题讨论】:

    标签: git github gitlab githooks pre-commit-hook


    【解决方案1】:

    如果您使用的是pre-commit 钩子,那么也不需要pre-push 钩子。两者都将涵盖正常使用中的同一组提交。两者都可以通过--no-verify 绕过,因此两者都不适合作为访问控制。尽管如此,pre-commit 钩子对于需要使用钩子的开发人员来说仍然是一个有用的工具。

    如果您想对您的代码库强制执行 linting,您应该在 CI 系统中使用检查,用户无法修改该检查。这就为那些觉得它有用的用户留下了 pre-commit 钩子,而更高级的用户可能会创建许多他们不想 lint 的一次性提交,可以跳过它并依赖 CI。

    【讨论】:

      【解决方案2】:

      如果它们是同一组检查,我同意没有理由同时拥有 pre-commitpre-push

      但是,如果它们是不同的检查(我通常建议只在 pre-commit 中保留最快的检查,在 pre-push 中保留较慢的检查),那么就有理由同时使用这两个钩子。

      一个例子可能很快,比如pre-commit 中的语法检查和pre-push 中的单元测试运行

      【讨论】:

        【解决方案3】:

        假设您在两个钩子上都对代码进行了 linting。假设你的分支使用了 pre-comit 钩子并且被 linted。还有另一个分支没有掉毛。然后你从无限分支中重新设置你的分支并想要推送。此时 pre-push 钩子会阻止你推动,除非你解决了这些 lint 问题。将 unlinted 分支合并到您的分支并尝试推送也是如此。

        【讨论】:

          猜你喜欢
          • 2014-02-15
          • 2017-05-15
          • 1970-01-01
          • 1970-01-01
          • 2019-01-08
          • 2021-03-19
          • 1970-01-01
          • 2019-11-26
          • 1970-01-01
          相关资源
          最近更新 更多