【问题标题】:Is it possible to use custom hooks in gitlab 8 for project commit?是否可以在 gitlab 8 中使用自定义挂钩进行项目提交?
【发布时间】:2015-12-06 20:09:49
【问题描述】:

我知道无法将 custom_hooks 应用于项目提交。

现在使用 gitlab 8 可以吗?

谢谢。

【问题讨论】:

    标签: git gitlab githooks


    【解决方案1】:

    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 升级之间的维护。因此,自定义挂钩的实现方式略有不同。但是,一旦创建了钩子,行为就完全相同了。按照以下步骤设置自定义挂钩。

    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 目录中,创建一个名称与挂钩类型匹配的文件。对于预接收挂钩,文件名应为预接收且不带扩展名。

    5. 使挂钩文件可执行并确保它归 git 所有。

    6. 编写代码以使 git 挂钩按预期运行。 Hooks 可以是任何语言。确保顶部的“shebang”正确反映语言类型。例如,如果脚本使用 Ruby,则 shebang 可能是 #!/usr/bin/env ruby

    就是这样!假设钩子代码被正确实现,钩子将在适当的时候触发。

    【讨论】:

    • 是的,我只是在 gitlab 8.2.2 上测试它,它就像一个魅力。
    • 这仅适用于单个项目,有没有办法可以为整个存储库添加挂钩?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多