【发布时间】:2015-12-06 20:09:49
【问题描述】:
我知道无法将 custom_hooks 应用于项目提交。
现在使用 gitlab 8 可以吗?
谢谢。
【问题讨论】:
我知道无法将 custom_hooks 应用于项目提交。
现在使用 gitlab 8 可以吗?
谢谢。
【问题讨论】:
Here 是描述如何操作的完整文档。
注意:必须在 GitLab 服务器的文件系统上配置自定义 git 挂钩。
只有 GitLab 服务器管理员才能完成这些任务。如果您没有文件系统访问权限,请探索 webhook 作为一个选项。
有关用户可配置的 Git Hooks 界面,请参阅 GitLab 企业版 Git Hooks。
Git 原生支持在不同操作上执行的钩子。服务器端 git 挂钩的示例包括 pre-receive、post-receive 和 update。有关每种挂钩类型的更多信息,请参阅 Git SCM 服务器端挂钩。
从 gitlab-shell 版本 2.2.0(需要 GitLab 7.5+)开始,GitLab 管理员可以将自定义 git 挂钩添加到任何 GitLab 项目。
通常,git hooks 放在存储库或项目的 hooks 目录中。 GitLab 创建从每个项目的 hooks 目录到 gitlab-shell hooks 目录的符号链接,以便于 gitlab-shell 升级之间的维护。因此,自定义挂钩的实现方式略有不同。但是,一旦创建了钩子,行为就完全相同了。按照以下步骤设置自定义挂钩。
- 选择一个需要自定义 git 挂钩的项目。
在 GitLab 服务器上,导航到项目的存储库目录。对于从源安装,路径通常是
/home/git/repositories/<group>/<project>.git。 对于 Omnibus 安装,路径通常是/var/opt/gitlab/git-data/repositories/<group>/<project>.git.在此位置创建一个名为 custom_hooks 的新目录。
在新的 custom_hooks 目录中,创建一个名称与挂钩类型匹配的文件。对于预接收挂钩,文件名应为预接收且不带扩展名。
使挂钩文件可执行并确保它归 git 所有。
- 编写代码以使 git 挂钩按预期运行。 Hooks 可以是任何语言。确保顶部的“shebang”正确反映语言类型。例如,如果脚本使用 Ruby,则 shebang 可能是
#!/usr/bin/env ruby。
就是这样!假设钩子代码被正确实现,钩子将在适当的时候触发。
【讨论】: