svn&git hook 对工作流的提升

本贴最后更新于 1269 天前,其中的信息可能已经沧海桑田

什么是 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 提交人直接看到报错信息

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...