说明:脚本中有一个pre-commit文件,这个文件是svn hooks 钩子之一,用于控制向版本库中提交时的动作;比如很多开发人员提交代码到库中时不填写备注信息,导致后期回滚时或检查时找不到对应的说明,因此可以通过pre-commit钩子来强性让提交代码时填写点信息;这个文件默认是shell可执行文件;也可以是其他语言写的可执行文件;
以下就是强制提交代码时需要填写信息的钩子,作为默认的模板放在svn数据根目录下~
[root@localhost ~]# cat /data1/svn_data/projects/pre-commit
#!/bin/bash
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
# Check that the author of this commit has the rights to perform
# the commit on the files and directories being modified.
#commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 5 ];#要求注释不能少于5个字符,您可自定义
then
echo -e "\nLog message cann't be empty! you must input more than 5 chars as comment!." 1>&2
exit 1
fi
# All checks passed, so allow the commit.
exit 0
此时就可以通过add.sh脚本来添加一个svn库(账号和库同名);如添加san账号也在/data/svn_data/projects/下创建了针对san的svn版本库,示例如下:
[root@localhost projects]# ./add.sh san
mkdir: 已创建目录 "/data1/svn_data/projects/CodeAuth"
Give a paassword:-> 123.com
[root@localhost projects]# ls
add.sh CodeAuth pre-commit san
[root@localhost projects]# cat CodeAuth/authz
[san:/]
san = rw
[root@localhost projects]# cat CodeAuth/passwd
[users]
san = 123.com
到此svn server配置完成;接下看看客户端的使用!
三、svn客户端使用
1、安装Tortoisesvn
下载地址看上面,安装很方便直接下一步到完成!
2、添加版本库
在桌面上新建一个文件夹名字随便取这里叫work
把work目录作为库目录checkout 如下:
弹出如下:填写版本库地址并输入账号密码
点击OK 如图:表示版本库配置成功!
3、向版本库提交文档
在库文件夹中创建1.txt文件添加到库中再提交如图:
如果不添加备注信息则无法提交成功,出现如下图所示:
以上步聚如果在linux下可以使用命令行处理;
checkout 目录为版本库目录
svn co svn://172.16.3.167:33690/san --username san --password 123.com 目录
如添加文件到版本库
svn add 1.txt
提交到库
svn commit -m "说明信息"
这里就不多说了!
四、svn之post-commit钩子使用
1、post-commit钩子说明
post-commit钩子默认和pre-commit钩子一样是没有启用的(所有钩子函数默认都没有 启用);但默认都有一个模板;位置在版本库的hooks下;如san账号对应的版本库
[root@localhost hooks]# ls
post-commit.tmpl post-revprop-change.tmpl pre-commit pre-lock.tmpl pre-unlock.tmpl
post-lock.tmpl post-unlock.tmpl pre-commit.tmpl pre-revprop-change.tmpl start-commit.tmpl
2、使用post-commit
通过模板复制成post-commit
[root@localhost hooks]# cp post-commit.tmpl post-commit
默认内容如下:
[root@localhost hooks]# egrep -v '(^$|^#)' post-commit
REPOS="$1"
REV="$2"
TXN_NAME="$3"
mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf
让我们修改下,效果是:当我们使用san账号往san库中提交时,让post-commit给我发一份邮件包含版本号,提交时间,提交内容等信息;