4

根据gitlab-shellpost-receive钩子的内容,它已被弃用。

#!/usr/bin/env ruby

# This file was placed here by GitLab.
# IT IS DEPRECATED NOW.
# All GitLab logic handled by update hook

但仅适用于 Gitlab 特定逻辑还是一般?恕我直言,我应该仍然可以将它用于更新我的存储库的 chiliproject post-receive 挂钩。不幸的是,我在这方面找不到任何具体的东西,主要是由于 gitlab v5 中的 gitolite <> gitlab-shell 转换。我希望有人能对此有所了解……</p>

[编辑]

对于 v1.7.1,该post-receive钩子已从gitlab-shell 中删除。所以正确的方法是要么创建一个 web-hook,仔细修改更新钩子,要么更密切地观察 gitlab-shell 的开发,直到实现自定义钩子支持。;-)

4

1 回答 1

4

2014 年更新:

Ciro Santilli评论和“使用 GitLab 的自定义后接收文件”中指出,现在(GitLab 不再使用 gitolite)有一种设置自定义挂钩的方法(GitLab 7.5.0+,2014 年 11 月)。

  1. 选择一个需要自定义 git 挂钩的项目。
  2. 在 GitLab 服务器上,导航到项目的存储库目录。
    对于手动安装,路径通常是/home/git/repositories/<group>/<project>.git.
    对于 Omnibus 安装,路径通常是/var/opt/gitlab/git-data/repositories/<group>/<project>.git.
  3. 在此位置创建一个名为custom_hooks.
  4. custom_hooks目录中,创建一个名称与钩子类型匹配的文件。
    对于pre-receive钩子,文件名应该pre-receive没有扩展名。
  5. 使钩子文件可执行并确保它由 git 拥有。
  6. 编写代码以使 git 钩子按预期运行。Hooks 可以是任何语言。确保顶部的“shebang”正确反映语言类型。
    例如,如果脚本在 Ruby 中,则 shebang 可能是#!/usr/bin/env ruby.

原始答案(2013 年 4 月)

这是不使用的直接后果,而是用 GitLab5.xgitolite替换它。gitlab-shell

这就是为什么你有gitlab-shell问题 14,关于允许自定义更新挂钩。

现在,您需要自己为 Gitlab 服务器上的每个 repos 添加注册该钩子,这不是很方便。

于 2013-04-27T20:41:27.230 回答