【问题标题】:How to update commit message in case of `--no-verify`?在 `--no-verify` 的情况下如何更新提交消息?
【发布时间】:2020-03-15 14:02:36
【问题描述】:

我们已经为我们的 git 存储库编写了预提交钩子。但是,开发人员可以使用--no-verify 绕过预提交钩子,并且无论如何都要提交。我想知道,当--no-verify 标志存在时,git 是否提供了一些更新提交消息的方法,以便在此类提交消息中添加Not Hook Verified:?或者可以为这种情况添加一些其他检查?

【问题讨论】:

  • 你可以采取相反的方法,在没有跳过钩子的情况下添加一些东西

标签: git githooks


【解决方案1】:

除非你愿意 fork git,否则修改 --no-verify 的行为, 分发修改后的 git 二进制文件,并以某种方式说服每个人 使用它不可能阻止用户执行git commit --no-verify 并在提交消息中添加一些任意单词。 考虑设置一个持续集成服务器,该服务器将始终 当它收到一个拉/合并请求时运行检查,它不能 在服务器上运行时被绕过。

【讨论】:

    【解决方案2】:

    如果您的目标是更新提交消息本身,例如自动包含 JIRA ID 等,您可以使用prepare-commit-msg 挂钩在编辑器启动之前修改提交消息。开发人员当然可以修改该消息,但我个人发现它对上述情况很有帮助。

    如果您的目标是淘汰使用git commit --no-verify 的开发人员,那么,不,没有办法做到这一点。如果您的目标是实施代码策略,那么该更改属于 pre-receive 挂钩或 CI 系统。你不能相信任何东西都会在开发者系统上运行,因为开发者可以修改或删除它。

    此外,为测试或检查项目实现pre-commit 钩子是一个问题,因为它使人们更难、更不方便地进行小的修复提交,然后将它们压缩在一起。例如,我经常提交WIP 更改,当我有一个小的、合乎逻辑的作品时,如果我破坏了东西,我可以回滚。当我准备好提交时,我将这些压缩在一起形成一个合乎逻辑的变化。我很清楚这样的提交不会满足提交消息标准或通过所有测试,但它们对于临时目的非常有用。

    【讨论】:

      猜你喜欢
      • 2011-07-09
      • 1970-01-01
      • 2012-05-01
      • 2015-10-01
      • 2017-04-11
      • 2012-01-28
      • 1970-01-01
      • 2021-02-15
      • 1970-01-01
      相关资源
      最近更新 更多