【指导】git 日志长度、日志开头、tag 命名的 hook 部署(gerrit ref-update)
来源:互联网 发布:手机淘宝5.10.3旧版本 编辑:程序博客网 时间:2024/05/22 17:13
如题,需要对git上库的commit message的格式做要求,要求长度不小于15,开头必须是以XX开头;tag命名必须是00.00.00开头)。
方案:新增 gerrit ref-update hook
在 review_site/hooks 目录中新增 ref-update 文件即可(如下):
需要注意的时候,bash和dash的语法不一样,注意所在服务器使用的情况:
#!/bin/sh## This hook script is to blocks incorrect commit messages and tag names.# Called by "git push" with arguments: projectname refname uploader oldrev newrev#projectname="$2"refname="$4"uploader="$6"oldrev="$8"newrev="$10"min_length=68# --- Check types# if $newrev is 0000...0000, it's a commit to delete a ref.if [ "$newrev" = "0000000000000000000000000000000000000000" ] ;then newrev_type=deleteelse newrev_type=$(git cat-file -t $newrev)ficase "$refname","$newrev_type" in refs/for/*,commit) # Gerrit change message=`git cat-file commit $newrev | sed '1,/^$/d'` # if comparetion: number -- [ lt--less than; gt--greater than; eq--equal ] / string -- [[ =/!= ]] if [ ${#message} -lt $min_length ] ;then echo "*" >&2 echo "*********************************************************" >&2 echo "*** [ERROR!] The length of your message is too short, ***" >&2 echo "*** it should be as long as 15 characters. ***" >&2 echo "*********************************************************" >&2 exit 1 elif [ "`echo $message | cut -c 1-8`" = "[BugFix]" ] || [ "`echo $message | cut -c 1-9`" = "[Feature]" ] ;then exit 0 else echo "*" >&2 echo "***********************************************************" >&2 echo "*** [ERROR!] Your message is not formatted correctly, ***" >&2 echo "*** it should be started with '[Feature]' or '[BugFix]' ***" >&2 echo "***********************************************************" >&2 exit 1 fi ;; refs/heads/*,delete) # delete branch echo "*" >&2 echo "***************************************************" >&2 echo "*** [ERROR!]You cannot delete a remote branch!. ***" >&2 echo "*** Please ask administrator for help. ***" >&2 echo "***************************************************" >&2 exit 1 ;; refs/tags/*,commit) # tag TAG=`echo $refname | cut -c 11-19` TAG_PREFIX=${TAG%%_*} CHECK_STRING="^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" if echo "$TAG_PREFIX" | egrep -q "$CHECK_STRING"; then #if [[ "$TAG_PREFIX" =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]] ;then exit 0 else echo "*" >&2 echo "********************************************************" >&2 echo "*** [ERROR!]Your tag is not formatted correctly! ***" >&2 echo "*** The correct tag name should be: ***" >&2 echo "*** NNN.NNN.NNN_[Time]_[Description] ***" >&2 echo "*** Note: N is required; each N is a digit; ***" >&2 echo "*** time and description is optional. ***" >&2 echo "********************************************************" >&2 exit 1 fi ;; refs/tags/*,delete) # delete branch echo "*" >&2 echo "***************************************************" >&2 echo "*** [ERROR!]You cannot delete a remote tag!. ***" >&2 echo "*** Please ask administrator for help. ***" >&2 echo "***************************************************" >&2 exit 1 ;; *) # Anything else exit 0 ;;esac# --- Finished
1 0
- 【指导】git 日志长度、日志开头、tag 命名的 hook 部署(gerrit ref-update)
- 如何创建和删除gerrit上的git tag
- 如何创建和删除gerrit上的git tag
- 如何创建和删除gerrit上的git tag
- git的日志显示
- Git, TortoiseGit, Gerrit安装部署
- Gerrit服务器的搭建(Git+Gerrit+PostgreSQL+LDAP)
- Hook startActivity()函数追加一条日志
- git 日志
- WAL日志的命名规则深度解析(一)
- WAL日志的命名规则深度解析(二)
- 日志摘抄—实施开头的第一件事
- 从日志中得到http开头的网址
- ##%msg:2:$%为去掉日志开头的空格
- 185 git 使用 Git Hook 实现网站的自动部署
- gerrit update
- 使用adb logcat 查看指定Tag的 日志
- Git学习教程(六)Git日志
- 切换jdk,但是运行java -version仍然不变的原因
- HttpServletRequest常用获取URL相关的方法
- 电子或通信领域当前的主流技术及其社会需求调查报告
- forget mysql pw problem
- 详解D3D/OpenGL光栅化(1)
- 【指导】git 日志长度、日志开头、tag 命名的 hook 部署(gerrit ref-update)
- New UI-为TextView设置超链接跳转的三个方法
- ListView 属性详解 参考1
- Android数据存储五种方式总结
- mysql随机查询若干条数据
- 电子或通信领域当前的主流技术及其社会需求调查报告
- IIS添加WCF支持
- android横竖屏切换和布局的问题
- 杭电Phone List1671