为什么无法将.git/hooks/my-hook添加到git中?

16
我希望在一个给定的代码库克隆中始终存在一些钩子(hooks)。是否有办法在.git/hooks目录下添加一个文件到代码库中呢?
谢谢!
2个回答

20

可以在 git 模板 中定义自己的钩子,但即使在那里,这些钩子也将是不可执行的。

也就是说,用户在克隆存储库后仍需激活它们(重命名或激活可执行位)。
这样一来,用户就不会在没有完全了解和明确批准的情况下运行任何不必要的脚本。
否则,对于任何“盲目”克隆存储库的人来说,这都将是太大的安全风险


2
在开放环境中不允许存储库执行代码听起来是合理的。话虽如此,在受控环境(我的公司内部项目)中可能会很有用。但是安装钩子的脚本必须要做。 - Mildred
1
我理解之前的评论,但是安装和激活钩子对我来说似乎是高级用户操作。在我的情况下,也就是一个封闭的环境中,我希望确保用户在提交信息中写入分支名称,这可以通过钩子轻松实现。但是我觉得要向每个用户解释如何配置它并不那么简单,而将其放在git仓库本身中会简化许多事情。 - Alexis
@Adrian 不确定我理解你的意思。 我所说的“盲目”,是指来自克隆的存储库中的钩子,它们将自动执行而您并未意识到它们的存在(因为它们被埋在 .git/hooks 中,因此有“盲目”的限定词)。 这与您获取、检查并决定运行(或由您的钩子运行)的源代码无关。 - VonC
@Adrian:“我显然看到了这一点,应该像处理普通代码一样对它们进行检查。”:我想这就是我们将会达成不同意见的地方。 - VonC
1
提交限制应仅适用于公共存储库。一个公司/组织希望在其存储库中具有挂钩的原因有很多。 - Anthony Awuley
显示剩余2条评论

5

听起来对我来说是一个安全风险。仅仅因为您克隆了某个存储库并不意味着您想要授予其执行代码的权利。

您可以将钩子的副本放入版本化的代码中,并包含一些脚本文件,以便用户可以轻松地将它们复制到他的钩子目录中。当然,一旦您安装了钩子,就可以使用它们来保持自己的最新状态。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接