用户提交代码的动作,对应的是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
分享到:
相关推荐
NULL 博文链接:https://com1com4.iteye.com/blog/692779
svn强制写注释才能提交代码 不写注释就报错 并且提交不成功
SVN提交时强制添加注释 —————————————————————————————————— 如果在windows环境中,则命名为pre-commit.bat并将该文件放在创建的库文件的hooks文件中 ————————————...
关于SVN提交强制加入注释,资源中包含配置说明,已经已经配置好可以直接替换的文件
svn提交强制输入注释信息 原理:利用svn的pre-commit钩子实现。
SVN禁止删除和强制注释操作的钩子脚本 只有用户lyj能删除 注释内容不能少于10个字符
svn强制解锁svn强制解锁svn强制解锁svn强制解锁svn强制解锁svn强制解锁
SVN限制删除和强制添加注释的hook脚本 windows版本
实现svn强制写日志和可修改log功能,可以更方便的更规范的使用svn日志功能.
svn强制写日志hooks delete-svn-folders.reg
通过在pre-commit文件查看用户的动作来限制删除文件的动作,通过查看用户输入的log信息长度,限制用户提交log
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS转移到Subversion。使用该脚本后悔强制用户变更版本是...
在服务器通过设置svn服务端钩子可以强制开发人员提交注释和限制指定类型的文件提交。
将文件中以下几行内容注释掉, 前面添加'#'并在此位置添加如下几行:#要求注释不能少于5个字符(数字和字母),您可自定义echo -e "nLog messag
svn强制解锁的几种做法.rar
1.在accessfile文件中,加入用户名... 2.向passwd文件中,添加用户与对应密码 在命令中心执行如下: cd C:\Program Files\CollabNet\Subversion Server\httpd\bin htpasswd -m D:\svn_repository\auth\passwd 对应帐号
利用svn的pre-commit钩子可简单实现此要求。 进入仓库project1/hooks目录,找到pre-commit.tmpl文件,重命名,去掉后缀.tmpl。 编辑pre-commit文件:(Linux系统和windows系统脚本内容见1和2) 1、Linux系统...
SVN演示 SVN演示 SVN演示 SVN演示 SVN演示 SVN演示
svn客户端svn客户端svn客户端svn客户端svn客户端