码迷,mamicode.com
首页 > 其他好文 > 详细

gitLab 全局hooks和custom_hooks,以及怎样实现自动pull

时间:2017-08-17 14:38:42      阅读:1495      评论:0      收藏:0      [点我收藏+]

标签:添加   两种   全局   提交   全局钩子   ref   自动   目录   脚本   

写代码的时候,git push到远程代码库后,往往还要连到服务器上pull代码才能进行测试。代码push后自动更新测试服务器的代码也算是一种刚需了。

gitLab的钩子分为两大类:1.web hooks

            2.custom hooks,这是调用git原生钩子,这里的钩子也有两种类型:(1)全局钩子 (2)每个项目对应的钩子。

这几天踩了很多坑,才用一种迂回的方法解决了问题。介绍一下GitLab和ubuntu的版本:

(1)Ubuntu 16.04.1 LTS + GitLab Community Edition 9.4.4

(2)Ubuntu 16.04.1 LTS + GitLab Community Edition 8.15.4

两个版本的gitlab配置起来是几乎是一样的。

1.web hooks

参考:https://docs.gitlab.com/ee/user/project/integrations/webhooks.html

这里就不重点介绍了,主要介绍让我踩了很多坑的custom hooks

2. custom hooks

参考:https://docs.gitlab.com/ee/administration/custom_hooks.html#custom-git-hooks

这里的官网文档有句:Normally, Git hooks are placed in the repository or project‘s hooks directory. GitLab creates a symlink from each project‘s hooks directory to the gitlab-shell hooks directory for ease of maintenance between gitlab-shell upgrades.

这里的symlink是软链接,类似windows的快捷方式,但是还是有区别:以gitlab中的hooks目录为例:

在dir1/hooks/A,在dir2/hooks/A,这里两个hooks是软链接的关系,其实是同一个。路径dir1和dir2不同,但是对这两个目录下的hooks目录的文件修改,添加,删除,都同时起作用,因为这个目录本来就是一个。好了,我们看gitlab中是怎样做的:

 

git本身具备hook机制,可以接收代码前或者更新代码后调用自定义的脚本。这个脚本在{{代码仓库}}/.git/hooks目录下。如下图:/home/htdocs/lost为git代码仓库,lost下面.git/hooks目录为git的回调脚本。常用的有pre-commit改脚本在提交前执行,可以做一些提交的验证工作。还有一个post-receive,该脚本在代码提交后执行,自动更新远程服务器的代码就用到这个脚本。

gitLab 全局hooks和custom_hooks,以及怎样实现自动pull

标签:添加   两种   全局   提交   全局钩子   ref   自动   目录   脚本   

原文地址:http://www.cnblogs.com/hpcpp/p/7380939.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!