设置VisualSVN在提交修改时必须输入一定数量的备注信息

来源:互联网 发布:machinarium for mac 编辑:程序博客网 时间:2024/05/18 05:04

我发现在使用SVN中,提交时,很多人不习惯填写备注信息,虽然在培训中、平时使用时多次提醒备注信息的好处,但是效果不大,每次提交时还是不写,或者随便写两字。

所以很有必要通过系统设置强制填写足够数量的备注信息。

在VisualSVN中提供了这种功能,可以在提交之前执行一个脚本,如果提交的信息不符合要求(比如备注信息不够长),就返给客户端一个错误,提交不成功。

在VisualSVN管理器中右键点击一个项目,弹出菜单,在”所有任务”中,可以看到“Manage Hooks...”菜单,如下:


点击之后弹出下面这个对话框:


在commit这一栏中,有三种不同的hook供选择,分别为:

Start commit hook:这个在发送本地内容到服务器之前就执行,一般用于权限检查,因为传给脚本的内容只有两个,分别是库路径和用户名,没有备注信息。

Pre-commit hook:这个在发送本地内容到服务器之后,真正提交之前执行,一般用于检查备注信息,传给这个脚本的信息也有两个,分别为库路径和备注信息。

Post-commit hook:这个是完全提交完成之后,执行的脚本,传给这个脚本的信息有两个,分别为库路径和当前的版本号。

我们需要设置的显然是Pre-commit hook脚本,因为之后这个脚本能够接收到备注信息,从而判断备注信息是否满足要求。


双击Pre-commit hook这一项之后,弹出一个对话框,输入脚本信息,如下:


我这里采用的是一个perl脚本进行验证custom-pre-commit.pl,内容如下:

#!/usr/bin/perl# config section$svnlook = '"G:\Program Files\VisualSVN Server\bin\svnlook.exe"';#--------------------------------------------$repos = $ARGV[0];$txn = $ARGV[1];$comment = `$svnlook log -t "$txn" "$repos"`;#destimarve说上面这个命令有问题,需要是使用下面这种才能获取到comment,个人自己试试吧,哪种可行就用哪种,本人试了一下两种都可行。#$comment = `$svnlook log "$repos" -t "$txn"`;chomp($comment);if ( length($comment) < 10 ){    print STDERR "提交的备注信息长度必须大于10个字节,请详细填写备注信息。";    exit(1);}exit(0);



我这里custom-pre-commit.pl脚本放在G:\SVNRepositories下,由perl调用。
这个脚本的意思是如果备注信息长度小于10,就打印一个错误信息,同时退出码为1。
VisualSVN如果接收到退出代码不等于0,就终止提交,同时将错误输出显示给客户端。


总结:
1,只能在Pre-commit hook中设置脚本,我原来想如果能在start commit hook设置就好了,后来发现start commit hook根本没有传递备注信息进来,所以就没办法了。在Pre-commit hook中设置的缺点是需要等到所有数据都上传到服务器上之后,才进行检查,如果你提交的数据量很大,传了半天终于传完了,结果告诉你备注不合格,你是不是有点抓狂呢?
2,只能针对项目库进行设置,不能针对目录设置。


下载Perl



http://m.blog.csdn.net/blog/dragonnewborn2012/12014373


在相应仓库目录下的hooks目录里,直接编辑pre-commit.bat,也行


@echo offsetlocalset SVN_BINDIR="C:\Program Files\VisualSVN Server"set SVNLOOK="C:\Program Files\VisualSVN Server\bin\svnlook.exe"set REPOS=%1set TXN=%2rem check that logmessage contains at least 10 characters%SVNLOOK% log %REPOS% -t %TXN% | findstr ".........." >nulif %errorlevel% gtr 0 goto errexit 0:errecho "提交文件时必须添加注释,不能少于10个字符,提交中止." 1>&2exit 1






0 0
原创粉丝点击