如何创建可供团队中的每个人使用的全局预提交挂钩? 基本上,我希望无论何时有人克隆远程存储库,他都应该默认获得这个全局预提交钩子。
我遇到了这个change default git hooks,Git commit hooks - global settings和此https://coderwall.com/p/jp7d5q,它建议创建一个具有公共挂钩的模板目录,并将 init.templatedir 设置为指向到这个目录。但是,这仅适用于在您自己的计算机上为自己设置默认挂钩。默认情况下,如何将预提交挂钩提供给整个团队?
答案 0 :(得分:9)
默认情况下,如何将
pre-commit
挂钩提供给整个团队?
它不能,正如我在“Difference between pre-push and pre-receive hook in git?”
中所解释的那样从安全的角度来看,这确实很可怕 - 每当我运行某些git命令时,没有人能够强迫我执行某些脚本
所以:
--template
的{{1}}选项。但无论如何,请记住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 是管理钩子的真正选择
这是……
/
└── .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
└── ...