【问题标题】:Hosted Git Solution With Server-Side Hooks?带有服务器端 Hooks 的托管 Git 解决方案?
【发布时间】:2012-02-08 07:59:48
【问题描述】:

已经有一个类似的“版本控制的托管解决方案——带有预提交挂钩?”关于SO的问题。然而,提出这个问题的用户只需要 client-side hooks,我正在寻找一个允许您配置 server-side hooks 的 Git 主机。 p>

(我正在寻找这个的原因是为了我们可以防止开发人员能够在特定分支上“push -f”。客户端钩子 no 用于解决的最小用途这个问题。)

那么,谁能推荐一个允许其用户设置服务器端挂钩的 Git 主机?

(如果该主机还提供集成的错误跟踪器,则奖励积分。)

* 编辑 *

这个问题已经得到解答,并且获得了赏金......但是如果有任何 Git 主机可以更容易地防止“push -f”(通过自己提供该级别的权限,或者通过提供访问发布预接收挂钩,然后我可以使用已经编写的/标准预接收脚本)我很想听听他们的消息。

【问题讨论】:

    标签: git hosting


    【解决方案1】:

    我认为 GitHub 允许服务器端挂钩

    【讨论】:

    • 当我询问 GitHub 支持(具体是关于 push -f 限制,而不是一般的服务器端挂钩)时,他们告诉我“目前在服务器端这是不可能的,但这是我们想要的做。” ...所以我认为这意味着他们不支持他们。既然您无法通过 ssh 连接到他们的服务器,那么您将如何将服务器端连接到 GitHub?
    • 有几个项目可以做到这一点。他们究竟做了什么来与 GitHub 集成,我不确定,但会看看。既然 -f 是不允许的,那你能不能不把这个分支删掉再push一下?
    • 问题是 -f 允许的;我们正试图阻止它(至少在 master 上)。
    • 好的。我会看看我能挖出什么。
    • 谢谢;只是在寻找 GitHub 替代品,因为他们的支持代表特别告诉我他们无法阻止 push -f (并且允许每个人“push -f origin master”显然是不好的做法)。但如果可能的话,就不需要替代品了……
    【解决方案2】:

    告诉开发人员不要这样做,如果您担心发生意外,请添加客户端挂钩以防万一。如果您担心开发人员无论如何都推崇大师而破坏政策,那么您肯定会遇到比这更大的问题。并且它不像 push -f 会在 Git 这样的分布式系统中具有破坏性;每个人仍将拥有被覆盖提交的本地副本。

    【讨论】:

    • 问题是人们不小心,而不是故意这样做(我同意,这将是一个更大的问题!)。但是,不同的开发人员使用不同的客户端(其中一些使用多个客户端)。由于重点是消除任何强制推送的机会,因此有一个可行的解决方案......除了一个客户端上的一个开发人员没有安装钩子......有点违背了目的。不过老实说,我认为服务器端的钩子是 Git 的一个基本特性。我有点震惊,没有 Git 主机允许你拥有它们。
    • 我想,Git 主机不想让你在他们的机器上运行任意代码(或发明沙盒)。如果你在自己的服务器上安装 Gitosis(或者任何热门的新东西;我只使用 Github),你可以安装任何你想要的钩子。
    • 如果开发人员刚接触 Git,而不是内部人员,并且只知道通过 IDE 的公开界面使用它,这可能比您想象的要大。 F. M.L.
    • 不是一个好的答案。开发人员是 git 的新手,并且在向他们描述之后就完成了。不,他们并不愚蠢。他们对 git 缺乏经验,急于不犯这样的大错误。
    【解决方案3】:

    github 上可用的钩子列表在这里:https://github.com/{user}/{repository}/admin/hooks

    他们有一个通用的 post-receive 钩子,但没有一个通用的 pre-receive

    您可以在这里编写自己的代码:https://github.com/github/github-services

    【讨论】:

    • 太棒了,这听起来很完美......除了在您链接的页面上,在“服务如何工作”下,它明确表示“提交了接收后后台作业......”,所以我我不清楚如何使用它来实现预接收挂钩。你能澄清一下吗?
    • 是的,仅在接收后。您可以对不在 X 列表中的 y 分支的协作者的任何提交进行 git revert,然后向他们发送 nasty-gram。
    • 我明白了,谢谢。仍然比我们只托管自己的 Git 做更多的工作(感谢 GitHub),但至少有办法。
    • 我在 github 上的 repo/admin/hooks 下没有看到任何东西,除了一些 web 挂钩和服务。目前尚不清楚其中任何一个都可以用来过滤/拒绝推送。如果他们可以这样做,请扩展您的答案 - 这对我的团队非常有帮助。
    【解决方案4】:

    这是一篇很老的帖子,但是,我想让人们知道 Assembla 现在为 Subversion 和 Git 存储库提供服务器端 Hooks。这些与 Github 不同,您必须建立一个服务才能运行它们。它们是 git 的完全成熟的 pre 和 post 提交钩子,包括更新钩子。

    查看Assembla

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 2016-11-05
      • 1970-01-01
      • 2017-08-26
      • 2011-10-13
      • 2012-06-17
      • 1970-01-01
      相关资源
      最近更新 更多