Git服务器,仓库的hook监控
简单应用场景:代码提交到git仓库,仓库监控到变化的jar包,然后把变化的jar包推到私服maven仓库。
Git预定义了触发时机:
ClientSide hooks:
1 pre-commit,当执行commit动作时先执行此hook,可以用此hook做一些检查,比如代码风格检查,或者先跑测试。
2 prepare-commit-msg, 当commit时需要输入message前会触发此hook,可以用此hook来定制自己的default message信息。
3 commit-msg,当用户输入commit的message后被触发,可以用此hook校验message的信息,比如是否符合规定,有没有cr等。
4 post-commit, 当commit完成后被触发,可以用此hook发送notification等。
5 pre-rebase, rebase之前会被触发,可以用此hook来拒绝所有的已经push的commits进行rebase操作。
6 post-merge, 当merge成功后,会触发此hook。
7 pre-push, 当push时,remote refs被更新,但是在所有的objects传输前被触发。
8 pre-auto-gc, 当git gc --auto执行前被触发。在垃圾回收之前做一些验证或备份是挺不错的。
ServerSide hooks:
1 pre-receive, 当收到push动作之前会被执行。
2 update, 也是收到push动作之前被执行,但是有可能被执行多次,每个branch一次。
3 post-receive, 当push动作已经完成的时候会被触发,可以用此hook来push notification等,比如发邮件,通知持续构建服务器等。
简单解决方案(git仓库使用的是裸仓库):由于裸仓库不保存实际文件,只保存变化过程。所以在检测到仓库有变化是,需要先把变化git pull到服务器的另外一个单独的目录,这样才能获取到实际存在仓库的代码或者文件,之后再deloy到私服。在钩子脚本post-receive阶段使用read oldValue newValue refName 获取到变化之前的commitId1 和变化后的commitId2,然后执行git diff commitId1 commitId2 --name-only 得到变化的文件,然后使用mvn deloy 把变化的文件推到仓库。
注意点
- 在 post-receive阶段调用git pull报错 提示 fatal: Not a git repository: '.' 。需要在最前面加上unset $(git rev-parse --local-env-vars)
- 在 post-receive脚本中无法调用mvn自己设定的环境变量问题,可以使用软连接,把自己设置的环境变量软链到以下提示的目录,比如/usr/local/bin
Git服务器,仓库的hook监控的更多相关文章
- 最新搭建GIT服务器仓库
新开了一个项目,现在需要将代码放在公司GIT服务器上面.所以这里需要了一些问题..记录一下.因为原来公司这边的服务器的git用户都是创建好的.这里没有创建.需要的可以看看:http://www.cnb ...
- Git服务器仓库的搭建和客户端使用方法
环境说明: 1.fedora21 桌面系统 2.已经配置好yum仓库 一.安装git # yum install git 1.1 创建git用户 创建git账户并登录,直接指定用户目录到/home ...
- git 服务器搭建,在自己服务器上搭建私有仓库
创建一个简单的私人Git版本控制服务器,首先得有个服务器(屁话).这种方式适合人比较少的情况,管理不需要很复杂,只要增加几个账号就能搞定. 如下面的情况,有一个服务器,两个客户端. 服务器:Debia ...
- 向 Git 服务器添加 SSH 公钥
. . . . . 在网上很少找到文章有提到如何将自己的 Git 远程仓库配置成可以通过 SSH 公钥方式认证的,而几乎清一色都是告诉你怎么通过 web 界面向 GitHub 添加 SSH 公钥.LZ ...
- ubuntu完美搭建git服务器【转】
转自:http://blog.csdn.net/tommy_wxie/article/details/38779667 最近公司项目需要用到Git来管理项目,正好逢周末花了点时间在虚拟机的unbunt ...
- Ubuntu16 搭建Git 服务器
刚入职一个月左右,昨晚公司给培训了SVN和Git的使用.之前在研究生期间,和导师做项目就一直使用git做版本管理.想起研究生有一段时间,git总出错(秘钥都不好使了,只有某个机器生成的rsa key ...
- (转)初学Git及简单搭建git服务器和客户端
终于搞定,mac自己作为git服务器,mac也是客户端,如何免登 从另外一个linux服务器的上传公钥得到提示 ssh-copy-id -i ~/.ssh/id_rsa.pub git@192.168 ...
- vdscode连接git服务器(以码云为例)
准备工作:先下载并安装git客户端 1.在码云或者github上新建项目,获得新建项目的地址,得到一个类似:https://gitee.com/zhangshitongsky/vueTest.git ...
- Linux 下搭建Git 服务器详细步骤
参考: https://www.cnblogs.com/dee0912/p/5815267.html#_label0 https://blog.csdn.net/carfge/article/deta ...
随机推荐
- ubuntu安装命令
sudo apt-get update 更新源sudo apt-get install package 安装包sudo apt-get remove package 删除包sudo apt-cach ...
- webpack & bundle analyzer
webpack & bundle analyzer webpack bundle analyzer https://github.com/th0r/webpack-bundle-analyze ...
- 简单FTP服务器搭建
1 配置IIS 打开控制面板-卸载程序-点击 打开或关闭windows功能-勾选 internet信息服务-确定 2 配置iis web站点 开始菜单-搜索iis并进入iis管理器(计算机-右键-管理 ...
- 黄金Corner
春水初生 春林初盛 春风十里 你在哪里
- BZOJ2795&2890&3647[Poi2012]A Horrible Poem——hash
题目描述 给出一个由小写英文字母组成的字符串S,再给出q个询问,要求回答S某个子串的最短循环节.如果字符串B是字符串A的循环节,那么A可以由B重复若干次得到. 输入 第一行一个正整数n (n<= ...
- MVC DropDownList
最近发现一个 MVC中绑定前台DropDownList , 并且设置默认选中项的简单方法. 直接上代码 方案一 Action: ViewData["goodsTypeList"] ...
- CSS覆盖公共样式中的某个属性
CSS如何覆盖公共样式中的某个属性?利用CSS样式的优先级. 如下例子: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transition ...
- day28 staticmethod 装饰器
静态方法装饰器 完全面向对象的程序中,如果存在某个函数既和对象无关也和类无关,就用staticmethod方法, 在调用此方法的时候只需要加上类名即可,说白了就是强行面向对象....把不是对象的方法也 ...
- MT【46】不动点,稳定点几何直观
评:不动点概念在数列的一类题中也是非常有用的.
- MT【11】对数放缩题
解答:C 评论:这里讲几个背景知识