【问题标题】:Default git pre-commit hook for everyone on a project?项目中每个人的默认 git 预提交挂钩?
【发布时间】:2018-01-08 15:34:52
【问题描述】:

followed these directions 安装一个 flake8 预提交钩子:flake8 --install-hook git。如何为每个人设置此预提交挂钩默认值?

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

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

【问题讨论】:

  • 每个开发者都必须安装它。如果您愿意,您可以提交一个脚本/批处理/任何自动安装的文件,但您仍然必须让每个人都运行该脚本并安装它。

标签: git flake8


【解决方案1】:

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

这应该是出于安全原因。 (克隆你的 repo 并不意味着我想在启动 git 命令时默认运行你的代码。)但是无论你是否订阅这些原因,这就是钩子的工作方式。

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

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

【讨论】:

  • 我最终使用了预提交,如另一个答案中所述。但是,这个答案是正确的,它仍然必须为每个 repo 安装和运行。
猜你喜欢
  • 2020-10-18
  • 2016-07-16
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
  • 2021-09-10
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多