如何防止Git挂钩跳过

时间:2019-07-08 18:21:52

标签: git githooks

在无法跳过钩子的地方,可以设置一些配置来使git严格。我已经设置了一些钩子来检查和修复队友的javascript代码,但是其中一些人继续使用--no-verify选项跳过钩子,因为他们认为这是一个错误。

是否可以防止钩子跳过?

1 个答案:

答案 0 :(得分:2)

Git没有提供强制使用钩子的方法。在某些情况下,该命令接受$binaryMagic = pack("n", 0xbabe);允许在逐个情况下覆盖这些挂钩。

Git允许这样做,因为提交正在进行的工作非常有用,而无需运行昂贵的棉绒检查,以后再回来进行清理即可,也可以代替--no-verify。经验丰富的开发人员经常这样做。

即使Git确实提供了此功能,也不会阻止开发人员删除该挂钩或删除可执行位以阻止其运行,或注释掉要运行的命令。假定拥有克隆的用户(以标准的Unix方式)具有胜任的能力,并且能够对要运行的挂钩做出自己的决定,因此,这些挂钩不打算在对抗性上下文中使用。

如果要强制执行编码样式和棉绒规则,则应使用CI作业来执行。您可以配置CI系统,以可能在每次提交的基础上完成代码检查代码样式的规则,并禁止合并,除非检查通过。对于更主观的检查,代码审查可能会有所帮助(并且无论如何建议这样做)。

这并不是说钩子对帮助开发人员尽早发现问题不是有用的,但是不能将钩子强加于用户。如果开发人员知道如果不通过钩子,CI系统将失败合并,则开发人员可能更愿意使用它们。他们也有可能选择禁用潜在的昂贵钩子,让功能更强大的CI系统对其进行检查,这也是合法的方法。