Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2124720
  • 博文数量: 317
  • 博客积分: 5670
  • 博客等级: 大校
  • 技术积分: 3677
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-10 17:51
文章分类

全部博文(317)

文章存档

2016年(2)

2015年(44)

2014年(68)

2013年(42)

2012年(23)

2011年(51)

2010年(67)

2009年(17)

2008年(3)

分类: LINUX

2014-09-09 16:45:33

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

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

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

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

看看效果图片

svn 强制要求填写备注

svn 强制要求填写备注

4


转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/linux/1263.html

SVN提交时强制添加注释

——————————————————————————————————

如果在windows环境中,则命名为pre-commit.bat并将该文件放在创建的库文件的hooks文件中

——————————————————————————————————–

@echo off

set SVN_BINDIR=C:\ProgramFiles\Subversion

修改为:set SVNLOOK="E:\freescm\freescm\SVN\bin\svnlook.exe"即可

setlocal

set REPOS=%1

set TXN=%2

rem check that logmessage contains at least 10 characters

%SVN_BINDIR%\svnlook log “%REPOS%” -t “%TXN%” | findstr “……….” > nul

if %errorlevel% gtr 0 goto err

exit 0

:err

echo Empty log message not allowed. Commit aborted! 1>&2

exit 1

——————————————————————————————————

如果在linux环境中,则命名为pre-commit,并添加执行权限

——————————————————————————————————–

#!/bin/sh

REPOS=”$1″

TXN=”$2″

SVNLOOK=/opt/CollabNet_Subversion/bin/svnlook

LOGMSG=$($SVNLOOK log -t “$TXN” “$REPOS” | grep “[a-zA-Z0-9]” | wc -c)

if [ "$LOGMSG" -lt 10 ]; then

echo -e “\n Empty log message not allowed.Commit aborted!”1>&2

exit 1

fi

————————————————————————————————————

脚本命令解释

————————————————————————————————————

LOGMSG=$($SVNLOOK log -t “$TXN” “$REPOS” | grep “[a-zA-Z0-9]” | wc -c)

将提交的日志信息作为便来那个输入之后,将grep英文和数字的结果作为变量

if [ "$LOGMSG" -lt 10 ]; 传入变量来判断变量长度是否小于10

-eq 等于号  -gt 大于号   -lt小于号

 

1.     echo 错误提示信息的时候必须重定向到 stderr ,即 1>&2

2.     pre-commit 文件拷贝到 hooks 目录之后,需要 chmod 0755 pre-commit ,给 pre-commit 文件增加可执行权限(或者至少把文件owner改为 svn 服务运行用户并加上ownerx权限)

 

阅读(1605) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~