【问题标题】:Git extra hook, pre-uploadGit额外钩子,预上传
【发布时间】:2018-12-30 20:00:31
【问题描述】:

我是一名大学生。目前,我正在做我的最后一年项目,该项目需要一个在存储库的服务器端自动执行的钩子,在对象被拉到客户端之前,在对象被推送到服务器端之后,这是“ post-receive”钩子。

我对钩子做了很多研究,我开始了解 grack 和 rjgit_grack。下面会附上链接。

格拉克:https://github.com/grackorg/grack rjgit_grack : https://github.com/grackorg/rjgit_grack

Grack 和 rjgit_grack 是来自 https://rubygems.org/ 的宝石。 Grack 项目旨在用 Rack 应用程序替换随 C Git 分发的内置 git-http-backend CGI 处理程序,而 rjgit_grack 是 grack 的替代适配器,它支持 git 的额外钩子,这些钩子具有我的项目所需的钩子,“preUpload”在执行上传操作之前立即执行的钩子,即在数据发送到客户端之前。但由于各种原因,我无法让它为我的项目工作。

为什么 Git 没有在数据发送到客户端之前立即执行的钩子?关于获得这个钩子或钩子的任何类似功能的任何建议?

【问题讨论】:

    标签: ruby git github githooks


    【解决方案1】:

    Git 钩子背后的想法是它们至少做两件事中的一件:更改存储库或当前操作的状态,或者选择性地阻止行为发生。

    在对象被推送之前执行的钩子将无法执行以下任一操作:它没有关于如何更改存储库的数据,因为它没有任何对象,也没有任何关于正在发生的事情的数据on,它无法有效地确定是否阻止推送。

    对于您的项目,使用在推送服务启动之前执行的包装器包装 git HTTP 后端脚本可能很有用,或者通过拦截数据来查找刷新 pkt 行分隔符 (0000) 的包装器。您还可以修补 Git 以在适当的位置为您的项目添加所需的钩子。

    【讨论】:

      猜你喜欢
      • 2011-05-10
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 2015-01-13
      • 2018-05-21
      相关资源
      最近更新 更多