设置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 ...
随机推荐
- nagios部署+短信和邮件报警
操作系统 CentOS6.6 服务端:10.0.0.20 客户端:10.0.0.50 一.nagios的服务端安装部署 1.nagios安装 [root@manager src]# rzrz wai ...
- [xsy2724]Tree
题意:给一棵树,找出$k$个点$A_{1\cdots k}$以最小化$\begin{align*}\sum\limits_{i=1}^{k-1}dis_{A_i,A_{i+1}}\end{align* ...
- 【bzoj1598】【 [Usaco2008 Mar]牛跑步】启发式搜索思路+spfa
(上不了p站我要死了,侵权度娘背锅) 最近复习搜索,先从启发式搜索来吧. 感觉启发式搜索这玩意挺玄学的,先从其思想入手,做一道经典的K短路. Description BESSIE准备用从牛棚跑到池塘的 ...
- zend studio9.0.3破解及汉化 windons版
注册码: 34E606CF10C3E4CF202ABCEAA9B0B7A64DD2C5862A514B944AAAB38E3EB8A5F2CD735A2AB4CF9B952590EFA62BA0AB2 ...
- UBI - Unsorted Block Images
参考:http://www.linux-mtd.infradead.org/doc/ubi.html UBI - Unsorted Block Images Table of contents Big ...
- 基于Rebound制造绚丽的动画效果-入门篇
基于Rebound制造绚丽的动画效果-入门篇 Rebound是什么? Rebound是一个来自 Facebook 公司的 Java物理和动画库.Rebound spring 模型可用于创建动画,让你感 ...
- docker部署 自动测试脚本记录
1 首先配置virtualenv, 并启动之,source py3env/bin/activate 2 安装各种必备包 ,如simplejson,chardet, configparser等 3 注意 ...
- 容器窗口 <QTabWidget>
////////////////////////////////////////// #include "test9_2a.h" #include "M_win.h&qu ...
- BAT文件使程序具有以系统权限运行的效果
@echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.sh ...
- 淘宝开源项目之Tsar
软件介绍: Tsar是淘宝开发的一个非常好用的系统监控工具,在淘宝内部大量使用,它不仅可以监控CPU.IO.内存.TCP等系统状态,也可以监控Apache,Nginx/Tengine,Squid等服务 ...