项目中每个人的默认 git 预提交挂钩?

Default git pre-commit hook for everyone on a project?

followed these directions 安装 flake8 预提交挂钩:flake8 --install-hook git。如何让每个人都默认使用此预提交挂钩?

看起来它改变了我自己的沙箱 (.git/hooks/pre-commit),但是没有什么可以提交或推送的。该项目的其他开发人员不会获得预提交挂钩,除非他们自己安装它。

我希望它像 .gitignore,其中有一个文件保存在源代码控制中,我们都可以更新和版本化。

本地挂钩与 .gitignore 文件不同。相反,它们就像 .git/info/exclude。也就是说,它们是 local 并且必须在任何应该使用它们的 repo 上配置。

可以说出于安全原因,为什么应该这样。 (克隆你的 repo 并不意味着我在启动 git 命令时默认要 运行 你的代码。)但是无论你是否同意这些原因,这就是挂钩的工作方式。

您可以提供挂钩脚本,可能是将脚本复制到正确目录的安装程序,以及要求开发人员安装挂钩的自述文件。

如果您需要开发人员无法覆盖的内容,则需要服务器端挂钩。例如,您可以使用预接收挂钩来拒绝不遵循您希望在提交级别强制执行的规则的推送。 (这确实激励开发人员安装预提交挂钩,以便他们更快地发现任何违反规则的行为,而不是浪费精力。)