为整个团队创建全局预提交挂钩

时间:2014-07-31 15:22:15

标签: git githooks

如何创建可供团队中的每个人使用的全局预提交挂钩? 基本上,我希望无论何时有人克隆远程存储库,他都应该默认获得这个全局预提交钩子。

我遇到了这个change default git hooksGit commit hooks - global settings和此https://coderwall.com/p/jp7d5q,它建议创建一个具有公共挂钩的模板目录,并将 init.templatedir 设置为指向到这个目录。但是,这仅适用于在您自己的计算机上为自己设置默认挂钩。默认情况下,如何将预提交挂钩提供给整个团队?

3 个答案:

答案 0 :(得分:9)

  

默认情况下,如何将pre-commit挂钩提供给整个团队?

它不能,正如我在“Difference between pre-push and pre-receive hook in git?

中所解释的那样
  

从安全的角度来看,这确实很可怕 - 每当我运行某些git命令时,没有人能够强迫我执行某些脚本

所以:

但无论如何,请记住git commit --no-verify 绕过 预提交挂钩。

这就是为什么服务器端钩子更安全(如“Difference between pre-push and pre-receive hook in git?”中所讨论的)并将捕获所有推送到祝福仓库的错误提交。

这并不是说预先提交钩子是没用的:如果你可以说服用户激活它,它将有助于更快地发现错误,这是一件好事。
但它无法“自动”执行。

答案 1 :(得分:7)

幸运的是,clone没有办法强迫人们挂钩。

如果有的话,你可以在其中写一个post-receive挂钩rm -rf /并在拉动人们的硬盘上

答案 2 :(得分:0)

https://github.com/rycus86/githooks 是管理钩子的真正选择

这是……

  1. 安全(它使用 opt-in model,它会要求确认是否应运行(或禁用)新的或更改的脚本)
  2. 可配置
  3. 为您处理很多细节
  4. 让您的钩子井井有条。例如:
/
└── .githooks/
    └── commit-msg/
        ├── validate
        └── add-text
    └── pre-commit/
        ├── 01-validate
        ├── 02-lint
        ├── 03-test
        ├── docs.md
        └── .ignore
    └── post-checkout
    └── ...
    └── .ignore
    └── .shared
    └── .lfs-required
├── README.md
├── LICENSE
└── ...