设置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

查看复制打印?

  1. REPOS="$1"
  2. TXN="$2"
  3. # Make sure that the log message contains some text.
  4. SVNLOOK=/usr/bin/svnlook
  5. $SVNLOOK log -t "$TXN" "$REPOS" | \
  6. grep "[a-zA-Z0-9]" > /dev/null || exit 1
  7. # Exit on all errors.
  8. set -e
  9. # Check that the author of this commit has the rights to perform
  10. # the commit on the files and directories being modified.
  11. "$REPOS"/hooks/commit-access-control.pl "$REPOS" $TXN \
  12. "$REPOS"/hooks/commit-access-control.cfg
  13. # All checks passed, so allow the commit.
  14. exit 0

上面是修改前的,看一下,下面的,修改后的。

查看复制打印?

  1. REPOS="$1"
  2. TXN="$2"
  3. # Make sure that the log message contains some text.
  4. SVNLOOK=/usr/bin/svnlook
  5. LOGMSG=`$SVNLOOK log -t $TXN $REPOS | wc -m`       //定义个变量,注意这里不是单引号
  6. #$SVNLOOK log -t "$TXN" "$REPOS" | \               //把这一行和下面的一行注释掉
  7. # grep "[a-zA-Z0-9]" > /dev/null || exit 1
  8. echo $LOGMSG > /home/administrator/www/aaa.txt     //为了测试变量用的,查看$LOGMSG有没有值,最后要注释掉
  9. if [ "$LOGMSG" -lt 48 ]                            //这里为什么是48呢,一个汉字对应16个字符
  10. then
  11. echo "\n至少输入4个汉字" >&2                        //必须填四个汉字
  12. exit 1
  13. fi
  14. # Exit on all errors.
  15. #set -e
  16. # Check that the author of this commit has the rights to perform
  17. # the commit on the files and directories being modified.
  18. #"$REPOS"/hooks/commit-access-control.pl "$REPOS" $TXN \    //把这一行和下面的一行注释掉。
  19. #  "$REPOS"/hooks/commit-access-control.cfg
  20. # All checks passed, so allow the commit.
  21. exit 0

4,保存后,我们要给pre-commit这个文件,加可执行权限chmod +x pre-commit,有一点在说一下就是$SVNLOOK 前面的不是单引号,具体shell语法,请参考shell在线手册

看看效果图片

svn 强制要求填写备注

时间: 2024-11-25 04:04:43

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

SVN提交修改时出现:Checksum mismatch

在使用SVN commit提交修改时,提示Checksum mismatch 问题,提示版本不一致,不能提交,类似于下图. 图片来源于网络,如有侵权,请告知删除. 搜索stackoverflow.com找到对我症的答案,link:https://stackoverflow.com/questions/11230872/subversion-base-checksum-mismatch 具体操作: 1.本地复制一份出错的文件 filea 为fileb,然后add提交 2.在服务端重命名filea为

ecshop二次开发 购物时为每件商品添加备注信息的修改方法

目标: 用户在选购商品加入购物车前可以为商品添加备注信息 加入购物车后可以在购物车查看备注信息 店主在查看订单时可以看到用户为商品添加的备注信息 用户在个人中心中可以看到商品的备注信息 目标一: 打开ecshop/goods.php,搜索"display"可以看到这句: $smarty->display('goods.dwt', $cache_id); 打开模板目录下的goods.dwt,搜索"<!-- {* 结束循环可选属性 *} -->",在这

设置git 不提交 修改权限的文件

vim .git/config  打开文件

VisualSVN设置提交时必须输入日志信息

VisualSVN设置提交时必须输入日志信息 1.svn提交时强制输入提交信息 为了阻止SVN提交空日志信息和垃圾文件可以在SVN服务器端强制必须填写日志信息,这时需用到pre-commit钩子脚本. 2.设置方法 (1)打开VisualSVN管理控制台 (2)右键你要设置的代码仓库 (3)所有任务->Manage Hooks…… (4)编辑“Pre-commit hook",输入如下内容: @echo off :: :: Stops commits that have empty log

easyUI draggable插件使用不当,导致拖动div内部文本框无法输入;设置echarts数据为空时就显示空白,不要动画和文字

先上一个Demo <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text

Git使用基本方法(从远程服务器获取分支,提交修改)

做项目初次用到Git,以前没用过,完全没不懂,琢磨了好久才弄得差不多,特此分享,可以少走点弯路. 这次用的操作系统是Mint 1.首先需要安装Git sudo apt-get install git 2.在本地新建Git仓库 新建一个文件夹,然后文件夹中打开终端,输入命令git init,即可创建一个仓库 3.连接Git服务器 这次我们用的服务器是http://git.oschina.net 输入命令 git remote add origin <server>,将<server>

【转载】Git push时重复输入用户名密码的问题

在windows上使用git来push到github服务器的时候,每次都需要填写用户名/邮箱.密码,很麻烦.最近用hexo写博客,需要频繁地进行博客配置和预览,而每次预览执行hexo deploy都需要输入用户名.密码验证,不胜其烦,今天下决心解决. 尽管github提供了SSH方式进行本地和服务端的链接,可是按照网站说明设置好之后,这个问题仍然得不到解决.尝试了好几次,最终用下面这个方法解决了. 首先添加环境变量. 在用户文件夹如C:\Users\zhangsan下新建一个名为_netrc的文

spark on yarn提交任务时一直显示ACCEPTED

spark on yarn提交任务时一直显示ACCEPTED,过一个小时后就会出现任务失败,但在提交时shell终端显示的日志并没有报错,logs文件夹中也没有日志产生.注:spark on yarn是不需要启动spark集群的,只需要在提交任务的机器配置spark就可以了,因为任务是由hadoop来执行的,spark只负责任务的提交. 任务提交命令为 bin/spark-submit --class org.apache.spark.examples.JavaWordCount\     --

第一次向nodeclub提交修改

今天第一次向nodeclub提交了两个修改,两个修改都是涉及部分浏览器的兼容性的. Manager很快合并了我的修改,好开森.晚上又重新回炉了一下git的日常操作,将git部分操作整理了一下写于此博.  为开源而开心- - git 初学指南 版本回退 历史查看 git log or git log --pretty=oneline:列出所有的提交记录 commit 333123123erer123sd123123213123213123 commit后面的为提交的ID 退回相应版本 退回版本有两