设置VisualSVN在提交修改时必须输入一定数量的备注信息
我发现在使用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,只能针对项目库进行设置,不能针对目录设置。
===========================
当我们用tortoisesvn,提交代码时,有很多人不喜欢写注释的,代码版本多了,根本搞不清,哪个版本改了什么东西?所以如果加一些注释的话,我们看起来,也方便很多。所以在提交的时候,我会强制要求,写注释。如果对svn的安装配置不怎么了解,请参考:linux svn安装和配置,不结合apache
1, cd /home/administrator/www/svn_test svn_test是一个代码仓库
2,mv ./hooks/pre-commit.tmpl ./hooks/pre-commit 将代码仓库根目录下,hooks文件夹中的pre-commit.tmpl文件重命名为pre-commit
3,vim ./hooks/pre-commit
- REPOS="$1"
- TXN="$2"
- # Make sure that the log message contains some text.
- SVNLOOK=/usr/bin/svnlook
- $SVNLOOK log -t "$TXN" "$REPOS" | \
- grep "[a-zA-Z0-9]" > /dev/null || exit 1
- # Exit on all errors.
- set -e
- # Check that the author of this commit has the rights to perform
- # the commit on the files and directories being modified.
- "$REPOS"/hooks/commit-access-control.pl "$REPOS" $TXN \
- "$REPOS"/hooks/commit-access-control.cfg
- # All checks passed, so allow the commit.
- exit 0
上面是修改前的,看一下,下面的,修改后的。
- REPOS="$1"
- TXN="$2"
- # Make sure that the log message contains some text.
- SVNLOOK=/usr/bin/svnlook
- LOGMSG=`$SVNLOOK log -t $TXN $REPOS | wc -m` //定义个变量,注意这里不是单引号
- #$SVNLOOK log -t "$TXN" "$REPOS" | \ //把这一行和下面的一行注释掉
- # grep "[a-zA-Z0-9]" > /dev/null || exit 1
- echo $LOGMSG > /home/administrator/www/aaa.txt //为了测试变量用的,查看$LOGMSG有没有值,最后要注释掉
- if [ "$LOGMSG" -lt 48 ] //这里为什么是48呢,一个汉字对应16个字符
- then
- echo "\n至少输入4个汉字" >&2 //必须填四个汉字
- exit 1
- fi
- # Exit on all errors.
- #set -e
- # Check that the author of this commit has the rights to perform
- # the commit on the files and directories being modified.
- #"$REPOS"/hooks/commit-access-control.pl "$REPOS" $TXN \ //把这一行和下面的一行注释掉。
- # "$REPOS"/hooks/commit-access-control.cfg
- # All checks passed, so allow the commit.
- exit 0
4,保存后,我们要给pre-commit这个文件,加可执行权限chmod +x pre-commit,有一点在说一下就是$SVNLOOK 前面的不是单引号,具体shell语法,请参考shell在线手册
看看效果图片

svn 强制要求填写备注
设置VisualSVN在提交修改时必须输入一定数量的备注信息的更多相关文章
- SVN提交修改时出现:Checksum mismatch
在使用SVN commit提交修改时,提示Checksum mismatch 问题,提示版本不一致,不能提交,类似于下图. 图片来源于网络,如有侵权,请告知删除. 搜索stackoverflow.co ...
- visualsvn server 提交修改日志
修改日志时遇到以下错误: Repository has not been enabled to accept revision propchanges;ask the administrator to ...
- mysql设置updatetime字段每次修改时自动更新
我们在数据库表设计阶段中都会加上CreateTime, UpdateTime字段, 在重要业务字段更新的时候,都会重新赋值UpdateTime字段,这个对后期查找分析业务数据变更时非常有用. 但是现在 ...
- 设置git 不提交 修改权限的文件
vim .git/config 打开文件
- 基于SpringBoot从零构建博客网站 - 开发设置主页标识和修改个人信息功能
由于守望博客系统中支持由用户自己设置个人主页的URL的后半段,所以必须要用户设置该标识的功能,而且是用户注册登录之后自动弹出的页面,如果用户没有设置该标识,其它的操作是不能够操作的,同时要求主页标识只 ...
- VisualSVN设置提交时必须输入日志信息
VisualSVN设置提交时必须输入日志信息 1.svn提交时强制输入提交信息 为了阻止SVN提交空日志信息和垃圾文件可以在SVN服务器端强制必须填写日志信息,这时需用到pre-commit钩子脚本. ...
- 设置Git提交时不用输入用户名和密码
在用git提交时代码至github上时每次都要输入用户名和密码,当提交操作较为频繁时非常不方便,可以按下文中的介绍,设置成提交时不用输入用户名和密码: 1.在当前库下,已经运行过 git remote ...
- easyUI draggable插件使用不当,导致拖动div内部文本框无法输入;设置echarts数据为空时就显示空白,不要动画和文字
先上一个Demo <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://ww ...
- 当git上文件大小写重命名的修改时(git大小写敏感/默认不敏感),如何提交
git默认是大小写不敏感!!! 加了感叹号是什么意思呢,意思就是这本身就是一个坑,本人使用的IDE是idea(网上说Eclipse可以避开问题),这个IDE本身就集成了git,但是如果要在termin ...
随机推荐
- AC日记——Little Elephant and Problem codeforces 221c
221C 思路: 水题: 代码: #include <cstdio> #include <cstring> #include <iostream> #include ...
- MSSQL 让排序更方便灵活
SQL: SELECT * FROM table1 ORDER BY CASE WHEN field=value THEN 1 ELSE 0 END (ASC/DESC) 是不是很方便呢,哈哈
- 计蒜客 28437.Big brother said the calculation-线段树+二分-当前第k个位置的数 ( ACM训练联盟周赛 M)
M. Big brother said the calculation 通过线段树维护. 这个题和杭电的一道题几乎就是一样的题目.HDU5649.DZY Loves Sorting 题意就是一个n的排 ...
- python获取小程序手机号并绑定
最近在做小程序开发,在其中也遇到了很多的坑,获取小程序的手机号并绑定就遇到了一个很傻的坑. 流程介绍 官方流程图 小程序使用方法 需要将 <button> 组件 open-type 的值设 ...
- luogu P1332 血色先锋队
题目描述 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物.孤立于联盟和部落的血色先锋军很快就遭到了天灾军团的重重包围,现在他们将主力只好 ...
- 用swift开发自己的MacOS锁屏软件(一)
最近看到了NearLock这款软件,感觉还是很不错的,当我兴致勃勃的安装了体验之后,发现效果和自己所想的差太多了,所以,便想着自己写一个吧. 刚开始当然是查资料之类的,不查不知道,一查吓一跳,国内基本 ...
- [置顶]
kubernetes资源对象--Horizontal Pod Autoscaling(HPA)
概念 HPA全称Horizontal Pod Autoscaling,即pod的水平自动扩展.自动扩展主要分为两种,其一为水平扩展,针对于实例数目的增减:其二为垂直扩展,即单个实例可以使用的资源的增减 ...
- 6、Python模块
最常用的两个模块: os #可以允许python调用执行系统命令,如shell sys #处理与python程序本身的事情 Python自带200多个常用模块 Python官网收集了2 ...
- c++类型所占的字节和表示范围
一:数值类型的大杂烩 (1)short.int 和 long 类型都表示整型值.存储空间的大小不同 一般, short 类型为半个机器字长,int 类型为一个机器字长,而 long 类型为一个或两个机 ...
- QQ-weiyun(微云)-云储存
ylbtech-DatabaseDesgin:QQ-weiyun(微云)-云储存 1.A,数据库关系图(Database Diagram) -- =========================== ...