svn&git hook对工作流的提升

  |   0 评论   |   0 浏览

什么是hook机制,以svn为例

svn的hook机制,就是用户在对仓库进行操作的时候,当特定的事件发生时,相应的hook会被调用,hook 其实就相当于特定事件的处理函数。
更加详细的不赘述,大家去百度谷歌必应即可

最最最常用的hook

  1. pre-commit 提交前校验是否允许提交
  2. post-commit 提交后 要做的事

可以想象到用处吗

项目健壮性提升,使用 pre-commit

  1. 新建unity Assets 必须带.meta才允许提交
  2. 每次提交必须是有意义的提交,与Jira进行强关联
  3. 分支锁,当前分支有锁则不许提交,对QA很有用,出版本必备

便利性提升 使用 post-commit

  1. 使用REST API ,集成CI工具。例如配置文件(json)提交,触发Jenkins进行生成sqlite
  2. C#或lua脚本提交,触发编译,可以尽早发现白痴提交
  3. 集成钉钉机器人,提交日志监控,看看团队中有没有划水的提交文本
  4. 某些目录提交,通知某些人。例如角色配置提交,通知音频设计师配音效等

可以想象的空间真的很多,那怎么写

以检查jira号为例子,写的是shell,当然也可以写py

function checkJIRA {
	JIRA_CODE=$1
	AUTHOR=$2

	NAME=$(echo ${JIRA_CODE} | tr 'a-z' 'A-Z')
	result=$(curl -u username:passward -s https://jira.babeltime.com/rest/api/2/issue/${NAME}\?fields\=summary)
	result1=${result##*summary\":\"}
	if [ ${#result} == ${#result1} ];then
		echo "输入的jira号不存在 [${NAME}]" 1>&2
		exit 1
	fi
    exit 0
}

test -z "$(grep -i 'WEST-[[:digit:]]' $LOGFILE)" || {
		num=$(grep -oE -i 'WEST-[0-9]*' $LOGFILE)
		checkJIRA $num $AUTHOR
}



echo "请按照如下格式提交 [JIRA号 备注内容] " 1>&2
echo "例: WEST-89757 大吉大利,今晚吃鸡" 1>&2
exit 1

乏善可陈,其中1>&2 是输出到控制台,当exit 1的时候,可以再svn提交人直接看到报错信息


标题:svn&git hook对工作流的提升
作者:kyochow
地址:https://kyochow.github.io/articles/2020/11/05/1604575596482.html