是否可以在gitlab 8中使用自定义钩子进行项目提交?

时间:2015-12-06 20:09:50

标签: git gitlab githooks

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

现在可以用gitlab 8吗?

感谢。

1 个答案:

答案 0 :(得分:3)

Here是描述如何操作的完整文档。

  

注意:必须在GitLab服务器的文件系统上配置自定义git挂钩。

     

只有GitLab服务器管理员才能完成这些任务。如果您没有文件系统访问权限,请浏览webhooks作为选项。

     

对于用户可配置的Git Hooks界面,请参阅GitLab企业版Git Hooks。

Git本身支持在不同操作上执行的挂钩。服务器端git挂钩的示例包括预接收,后接收和更新。有关每种挂钩类型的详细信息,请参阅Git SCM服务器端挂钩。

从gitlab-shell 2.2.0版本开始(需要GitLab 7.5+),GitLab管理员可以为任何GitLab项目添加自定义git钩子。

设置

  

通常,git钩子放在存储库或项目的钩子目录中。 GitLab从每个项目的hooks目录创建一个符号链接到gitlab-shell hooks目录,以便于gitlab-shell升级之间的维护。因此,自定义挂钩的实现方式略有不同。但是,一旦创建了钩子,行为就完全相同了。请按照以下步骤设置自定义挂钩。

     
      
  1. 选择需要自定义git hook的项目。
  2.   
  3. 在GitLab服务器上,导航到项目的存储库目录。对于从源安装,路径通常为/home/git/repositories/<group>/<project>.git。   对于Omnibus,通常会安装路径   /var/opt/gitlab/git-data/repositories/<group>/<project>.git.

  4.   
  5. 在此位置创建一个名为custom_hooks的新目录。

  6.   
  7. 在新的custom_hooks目录中,创建一个名称与钩子类型匹配的文件。对于预接收挂钩,文件名应该是预先接收的,没有扩展名。

  8.   
  9. 使钩子文件可执行,并确保它由git拥有。

  10.   
  11. 编写代码以使git钩子函数按预期方式运行。钩子可以是任何语言。确保&#39; shebang&#39;在顶部正确反映了语言类型。例如,如果脚本在Ruby中,则shebang可能是#!/usr/bin/env ruby
  12.   

那就是它!假设正确实现了钩子代码,钩子将适当地触发。