我按照这些说明安装了 flake8 预提交挂钩:flake8 --install-hook git
. 如何为每个人设置此预提交挂钩默认值?
看起来它改变了我自己的沙箱(.git/hooks/pre-commit
),但没有什么可以提交或推送的。除非他们自己安装,否则项目中的其他开发人员不会获得预提交挂钩。
我希望它像 .gitignore,其中有一个文件保存在源代码控制中,我们都可以更新和版本。
本地挂钩不像.gitignore
文件。而是他们喜欢.git/info/exclude
。也就是说,它们是本地的,必须在任何应该使用它们的 repo 上进行配置。
可以说是出于安全原因,为什么应该这样。(克隆你的 repo 并不意味着我想在我启动 git 命令时默认运行你的代码。)但是无论你是否订阅这些原因,这就是钩子的工作方式。
你可以做的是提供钩子脚本,可能是一个将脚本复制到正确目录的安装程序,以及一个要求开发人员安装钩子的自述文件。
如果您需要开发人员无法覆盖的东西,则需要一个服务器端挂钩。例如,您可以使用 pre-receive 挂钩来拒绝未遵循您希望在提交级别强制执行的规则的推送。(这确实给了开发人员安装预提交钩子的动力,这样他们就可以更快地发现任何违反规则的行为,并且不会浪费精力。)