CentOS7安装配置SVN及SVN Hook实战(2)

说明:脚本中有一个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 如下:

CentOS7安装配置SVN及SVN Hook实战



弹出如下:填写版本库地址并输入账号密码

CentOS7安装配置SVN及SVN Hook实战



点击OK 如图:表示版本库配置成功!

CentOS7安装配置SVN及SVN Hook实战



3、向版本库提交文档

在库文件夹中创建1.txt文件添加到库中再提交如图:

CentOS7安装配置SVN及SVN Hook实战



CentOS7安装配置SVN及SVN Hook实战



CentOS7安装配置SVN及SVN Hook实战



如果不添加备注信息则无法提交成功,出现如下图所示:

CentOS7安装配置SVN及SVN Hook实战



以上步聚如果在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给我发一份邮件包含版本号,提交时间,提交内容等信息;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/033c27bc079c52ad6c63d922f891afbb.html