【问题标题】:why it is not possible to git add .git/hooks/my-hook为什么无法 git add .git/hooks/my-hook
【发布时间】:2011-07-07 02:52:07
【问题描述】:

我希望在给定存储库的克隆中始终存在一些挂钩。有没有办法在存储库的 .git/hooks 中添加文件?

谢谢

【问题讨论】:

    标签: git githooks git-add


    【解决方案1】:

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

    即克隆存储库后,用户仍然必须激活它们(重命名或激活可执行位)。
    这样一来,所述用户就不会在没有他/她完全知情和明确批准的情况下执行任何不需要的脚本。
    否则会对任何“盲目”克隆 repo 的人造成太大的安全风险

    【讨论】:

    • 不允许存储库在开放环境中执行代码听起来很合理。话虽如此,在封闭的环境中(我公司的内部项目)它可能很有用。但是安装钩子的脚本必须这样做。
    • 我了解以前的 cmets,但是安装和激活钩子对我来说是一种高级用户操作。在我的情况下,这是一个封闭的环境,我想确保用户在提交消息中写入分支名称,这很简单,只需一个钩子即可。但在我看来,向每个用户解释如何配置它并不那么简单,而将它放在 git repo 本身会简化很多事情。
    • “对于任何“盲目”克隆存储库的人来说,安全风险太大。”这就是答案?真的吗?我还可以在我的 ANT 或 Maven 配置中包含“代码执行”之类的内容。例如,这甚至可能比 pre-commit 钩子执行得更多,只是更容易看到。 “盲目”做某事总是有风险的。
    • @Adrian 不确定我是否关注你。通过“盲目”,我指的是来自您正在克隆的 repo 的钩子,并且会在您没有意识到它们存在的情况下自动执行(因为它们被埋在 .git/hooks 中,因此是“盲目”限定符)。这与你获得、检查和决定运行(或被你的钩子运行)的来源无关。
    • 提交限制应该只适用于公共回购。公司/组织希望在其存储库中添加挂钩的原因有上百万个。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-12
      • 1970-01-01
      • 2013-02-07
      • 1970-01-01
      • 2020-08-11
      • 2013-06-02
      • 1970-01-01
      • 2022-11-10
      • 2012-06-13
      相关资源
      最近更新 更多