关于 hook

所谓的 hook 就是存在于.git/hooks/ 目录下的一些脚本文件(shell、Python、Ruby、Perl 皆可),这些脚本文件可以在某些 git 操作执行之前或者之后触发,可以让开发者来自定义属于自己的工作流。比如我们可以在自己本地添加一个 hook 在我们每次提交 commit 信息以后执行,检查我们的 commit 信息是否符合规范,如果不规范就退出当前这次提交。git 为我们预留了 14 个 hook 分别适用于本地 commit 、邮件通知、衍合、合并、开新分支以及服务器接收提交。在使用的时候只要把我们写好的脚本按照 git 要求的文件名放到 git 仓库中的 .git/hooks/目录中就好。

如何在 Stash 中添加 hook

如果想添加服务器 hook,就需要在服务器端的 .git/hooks/目录下添加脚本文件,这就需要拥有 Stash 服务器的文件系统的权限,如果是在公司的环境下还要去向管理员申请权限,是比较麻烦的,还好目前 Stash 上有一些插件可以比较方便的实现我们一般在服务器添加 hook 要实现的需求,这里挑两个简单介绍下。

Yet Another Commit Checker

这个插件主要用于检查 commit message ,其是一个 pre-receive hook ,就是说如果 commit message 如果不合法,这些 commit 就会无法 push 上去。该插件的主要功能有:

  • 检查 commit 的邮箱、姓名;

  • 利用正则表达式检查 commit message;

  • 通过 JIRA 检查 commit message 中的 task ID 是否合法,同时会忽略一些类似 task ID 的字段(比如『UTF-8』这种的);

  • 通过 JQL规定查找到的 task 的状态,比如可以规定 task ID 对应的 task 必须状态是 Open 的;

  • 通过正则检查分支名;

  • 自定义错误提示消息;(默认的错误消息里头有一只萌萌的小熊)

  • 忽略 merge 的 commit 不进行检查,也可以通过正则忽略一些 commit 不进行检查, 也可以忽略从其他 service 来的 commit (如 CI 系统的生成的 commit)。

使用配置

在 Stash 中安装插件后,点击插件后就可以打开插件的配置项。配置项分为很多部分,以下一一陈述。

首先是配置 commit message 的检查选项,前两项开启后会检查 push 的 commit message 中是否使用的是 Stash 上的用户名和邮箱。第三项则是自定义的用于检查 commit message 的正则表达式,这里要求整个 commit message 都要符合这个正则表达式。这里写的是([A-Z]+-\d+)-(.|\n)*,最后的(.|\n)*是为了识别多行的 commit message。

然后是配置是否检查 task ID 合法。前面的正则表达式仅仅能够检查格式上是否符合一个 task ID 的格式,但是会把『IPH-456-test』这样的内容认为是合法的,要想做进一步的检查,就需要向 JIRA 查询这个 task ID 是否是合法的。

开启了第一个选项以后,如果之前的正则表达式的部分没有分组,那么就会用所有的 commit message 作为 task ID 去进行合法性校验(首先 commit message 要符合正则)。如果正则表达式有分组,就会用符合正则表达式的部分中对应分组的部分作为 task ID 去进行合法性校验。可以用第二种方式来主动定位 task ID。(如果有多个分组呢?测试后发现有多个分组时会把第一个分组作为 task ID)。

第二个选项则是会忽略一些形似 task ID 的、符合正则的 commit message 部分,比如『UTF-8』这样的部分。开启了第二个选项可以防止因为这样的字符存在而导致的检查失败。

第三个选项是使用 JQL 来设置查找到的 task 的状态,比如可以通过 status="open"来指定对应的 task 必须是处于 open 状态的。更多的一些用法可以参照 JQL 的语法。

然后还可以利用正则表达式检查分支名。

自定义错误信息,这样 push 失败以后就会这样显示(小熊是默认的 header):

最后就是设置例外 commit 了,第一个选项开启后可以提交 merge commit ,第二个就是用正则来进行例外设置,第三个开启后则是会例外一些来自服务的 commit。

如何在内部 Stash 服务器上添加 hook相关推荐

  1. 如何在服务器上添加虚拟IP?看完原来如此简单

    实战内容 这里我们创建两个虚拟机环境,IP地址分别为192.168.209.121和192.168.209.122,如下图所示: 在192.168.209.122上添加一个VIP地址为:192.168 ...

  2. 【svn】 如何在Linux服务器上添加svn账户的教程

    1.先找到svn的安装路径.命令:cd/(cd/后面写自己的安装路径) 2.查看路径下有哪些文件或文件夹.命令:ls 3.发现一个5个,其中有一个文件夹叫conf. 4.进入conf文件夹,并查看.命 ...

  3. citrix创建虚拟机服务器,在 ESXi 服务器上安装并配置 Citrix SD-WAN Center

    在 ESXi 服务器上安装并配置 Citrix SD-WAN Center April 13, 2021 贡献者: C 安装 VMware vSphere 客户端 以下是下载和安装用于创建和部署 Ci ...

  4. 服务器安装报告linux,linux – 在ubuntu服务器上安装了2TB磁盘,dmesg将其报告为9444732965540666 MB...

    我在Dell PowerEdge硬件上运行了老化的 Linux服务器,带有SAS 5IR RAID控制器.它有一对RAID 1配置的SAS 146Gb磁盘,具有操作系统和其他软件.我需要在服务器上添加 ...

  5. 网站服务器上加入三层开发的网站错误解决

    在网站服务器上添加三层开发的网站,发现网站打开的时候提示Server Error in '/' Application.截图如下 解决办法: 1,把文件夹中的bin文件夹移动到上一目录下,比如放入该文 ...

  6. 沃云服务器上部署web项目(亲试)!

    昨天帮一个同学在沃云上部署了一个项目,今天特此记录下: 难点共有以下: 宝塔助手使用+数据库部署到云端+tomcat安装本地项目上传+开放端口 一.宝塔助手教程https://blog.csdn.ne ...

  7. 在离线服务器上创建深度学习虚拟环境

    在离线服务器上创建深度学习虚拟环境 一.安装虚拟机 1.虚拟机软件和Ubuntu下载链接 2.注意事项 二.Linux平台下Anaconda虚拟环境配置 1. Anaconda安装 2. 配置自己所需 ...

  8. 在服务器上部署自己的h5页面用于微信内部浏览器打开

    在服务器上部署自己的h5页面用于微信内部浏览器打开  域名注册 和 虚拟主机租用  都是在 西部数据 进行的 以下为 西部数据 的官网 登录和注册这里不过多介绍...... 一.域名注册 点击官网首页 ...

  9. 异常信息:由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults

    异常信息:由于内部错误,服务器无法处理该请求.有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults <behaviors><endpo ...

最新文章

  1. 百度绝对控股,小度科技独立融资,投后估值200亿元
  2. 怎样做好敏捷项目管理?
  3. WordPress插件扫描工具plecost
  4. 各种促销背后的精明算术
  5. 泛型类 0104 c#
  6. win10电脑开机密码忘了怎么办_电脑开机密码忘了怎么办最简单的方法_windows7教程...
  7. 自己动手写个小框架之三
  8. matlab里的计算符号,Matlab符号运算总结
  9. 【Codeforces633H】Fibonacci-ish II
  10. 家庭宽带之IPv6网络测试
  11. python笔记2—day2
  12. Qt编写安防视频监控系统46-视频存储
  13. 利用贴图实现的人脸特效
  14. burp安装及代理设置
  15. 全民小视频逆势崛起:短视频的“小趋势”与“信用飞轮”
  16. 第四平方和定理,用c语言实现
  17. 2015届秋季面试感悟
  18. 坚果的2022年终总结
  19. FL Studio乐理教程之调式音阶
  20. 探讨IT人的创业方向

热门文章

  1. 【浏览器】浏览器模式与文档模式区别
  2. UVa 11998 破碎的键盘(数组实现链表)
  3. iPad开发(相对于iPhone开发时专有的API)
  4. AngularJS-liveRoomDirective.js 直播间指令
  5. 矩阵经典题目六:poj 3070 Fibonacci
  6. 一段简单的打印代码(c#)
  7. ldap和kerberos整合大数据账号
  8. 诗与远方:无题(六十七)- 张国荣,想你
  9. 诗与远方:无题(六十二)
  10. Python学习笔记之列表(三)