`
mushme
  • 浏览: 778367 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

svn强制添加注释

svn 
阅读更多
用户提交代码的动作,对应的是pre-commit。因此,进入hook目录把pre-commit.tmpl文件名修改为pre-commit, Windows下可以修改为pre-commit.bat,这样可以让系统知道该文件是可执行文件。
打开pre-commit文件,注释或删除所有的代码,然后添加如下代码:
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook; # 修改为服务器安装的subversion目录
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 5 ];#要求注释不能少于5个字符,您可自定义
then
  echo -e "\n不写提交注释,你都敢提交!要提交就老实写清楚你提交的是什么." 1>&2
  exit 1
fi
 
exit 0

保存,退出。
给pre-commit添加可执行权限:
chmod +x pre-commit


一般来说,这样基本就够,有时候你希望配合一些行政手段,比如代码必须经过谁审核才可以提交,以下是注释不能为空,而且注释中必须有checked by zhangsan,才能提交的shell
#!/bin/sh
REPOS="$1"
TXN="$2"
managercheck="checked by zhangsan"
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook

LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 5 ];#要求注释不能少于5个字符,您可自定义
then
  echo -e "\n不写提交注释,你都敢提交!要提交就老实写清楚你提交的是什么." 1>&2
  exit 1
fi

checked=`$SVNLOOK log -t "$TXN" "$REPOS"|grep "$managercheck" |wc -c`
if [ "$checked" -lt 1 ]
then
  echo -e "\n你的代码必须张三通过了才可以提交!." 1>&2
  exit 1
fi

# All checks passed, so allow the commit.
exit 0


下面模拟的是张三和李四都可以检查代码的shell
#!/bin/sh

REPOS="$1"
TXN="$2"
zhangsancheck="checked by zhangsan"
lisicheck="checked by lisi"
# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook

LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
lichecked=`$SVNLOOK log -t "$TXN" "$REPOS"|grep "$lisicheck" |wc -c`
zhangchecked=`$SVNLOOK log -t "$TXN" "$REPOS"|grep "$zhangsancheck" |wc -c`
if [ "$LOGMSG" -lt 5 ];#要求注释不能少于5个字符,您可自定义
then
  echo -e "\n不写提交注释,你都敢提交!要提交就老实写清楚你提交的是什么." 1>&2
  exit 1
fi
if [ "$lichecked" -gt 1 ]
then
  exit 0
elif [ "$zhangchecked" -lt 1 ]
then
 echo -e "\n你的代码必须张三看了后才可以提交." 1>&2
  exit 1
fi

# All checks passed, so allow the commit.
exit 0



以下代码本来是为了限制某个用户只能提交部分格式的文件,后来发现现有的几个hook模版均不提供对应的参数,先mark在下面
#此处增加前端可以文件后缀名
FILTER='\.(js|css|jpg|png|gif)$'

files=$($SVNLOOK changed -t $TXN $REPOS |awk '{print $2}')
for f in $files
do
#检查文件类型,仅允许上面允许的后缀
if echo $f|tr A-Z a-z|grep -Eq $FILTER
then
echo "File $f is not allow ($FILTER) file" >&2
exit 1
fi
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics