SVN的Hooks功能--强制添加注释
所谓hooks,可以类似 理解Linux内核Netfilter框架的hook点和hook函数的概念。当用户在维护代码的过程中,其执行的相关动作正好触发了相关hook点,就 会去执行对应hook点的脚本。
SVN版本库目录下有hooks目录,里面有很多.tmpl的文件。这些文件用以定义某些动作触发的 hook脚本。默认状态下,这些脚本的后缀都是.tmpl,是没有起作用的。相当于Netfilter的各个hook点没有注册hook函数。所以,当用 户执行相关维护代码动作的时候,也不会触发hook脚本。因此,在默认状态下,用户提交代码的时候,不用添加注释信息也会被版本看所接受。而且,用户想修 改自己的注释时,会得到服务器拒绝的相关提示信息(本人搭建的svn server是这样的默认情形)。
那么如何设置hook脚本以保证 强制用户添加注释,以及允许用户修改注释呢?
1. 强制添加注释信息
用户提交代码的动作,对应的是pre-commit。因此,可以修改pre-commit.tmpl文件。
文 件名修改为pre-commit, Windows下可以修改为pre-commit.bat。这样可以让系统知道该文件时可执行文件。
将 文件中以下几行内容注释掉, 前面添加'#'
$SVN LOOK log -t "TXN" "REPOS" |
grep "[a-zA-Z0-9]" > /dev/null || exit 1
commit-access-control.pl "REPOS" "TXN" commit-access-control.cfg || exit 1
并在此位置添加如下几行:
LOGMSG=`SVNLOOK log -t "TXN" "REPOS" | grep "[a-zA-Z0-9]" | wc -c` if [ "LOGMSG" -lt 5 ];#要求注释不能少于5个字符(数字和字母),您可自定义
then
echo -e "nLog message cann't be empty! you must input more than 5 chars as comment!." 1>&2
exit 1
fi
保存,退出。
给pre-commit添加可执行权 限 :
chmod +x pre-commit
#!/bin/sh export LANG=en_US.UTF-8 REPOS="$1" TXN="$2" SVNLOOK=/usr/bin/svnlook LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c` if [ "$LOGMSG" -lt 8 ]; then echo -e "================================================" 1>&2 echo -e "nLog message cann't be empty! you must input more than 5 chars as comment!" 1>&2 echo -e " Powered By PHPdragon" 1>&2 echo -e "================================================" 1>&2 exit 1 fi # All checks passed, so allow the commit. exit 0
经过该设置,用户提交代码时注释信息小于5个字符将会得到警告,并且代码不会被提交到版本上。
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 独立开发,这条路可行吗?
· 我在厂里搞 wine 的日子
· 如何通过向量化技术比较两段文本是否相似?
· 35+程序员的转型之路:经济寒冬中的希望与策略
· JavaScript中如何遍历对象?
· C#源生成器:让你的代码飞起来的黑科技
· 简单记录下最近2个月完成的线上系统迁移工作
· JavaScript面试题,为什么[] + 0 = '0', 而{} + 0 = 0?
· 推荐 5 款实用的 Docker 可视化管理工具,工作效率翻倍!
· 转岗运维第一集:手把手教你完成Nginx-HTTPS证书全生命周期