SVN与测试环境集成

    在上一章中讲述了非Apache模式的svn安装。安装完成svn后,就可以实现svn提交代码同步更新测试环境中的代码了(即实现svn和测试环境的集成)。
    当然,我们在开发中会存在至少三套环境,即:开发自测环境(本地生产环境)、专业测试环境(与正式环境同步)、正式服务环境。要处理好三套环境中的代码管理,这也不是一件很容易的事情,需要根据各公司项目组的安排。我就不讲我们的处理方案了(呵呵保密)。
    下面讲一下SVN与测试环境的集成:
    1、安装完成svn后,创建数据仓储(这些在上一章中讲过了)。以我的为例,我的代码数据仓储的位置为:/opt/svndata/test。
        进入/opt/svndata/test目录后,发现存在一个hooks目录,该目录就是svn钩子函数存储的位置,这是我们本次实现所依赖的。
    2、svn提供多种svn钩子函数供用户扩展实现一定的功能,我们这里采用post-comment钩子函数,实现两个地方的代码同步。即当开发人员自测完成后,提交代码到svn时(comment),同步实现将代码更新到测试环境一份。
    3、最初搭建好svn环境后,将原始项目代码目录更新到测试环境代码位置,执行指令:
        /usr/local/svn/bin/svn checkout       URL      PATH。例如:/usr/local/svn/bin/svn checkout svn://127.0.0.1:3690/test /www
通过以上检出,就可以保证/www中的代码通过svn update来更新了。
    4、在hooks目下,复制一份post-commit.tmpl并重命名为post-commit。然后编辑该文件(post-commit  当用户提交代码时代码提交完成时,svn会自动调用post-commit钩子函数,调用该文件post-commit):vi post-commit;编写内容如下:
--------------------------------------------------------------------------------------------
#!/bin/sh
#Program:
#       This program update "/www" code on user commit
#History:
#       2012/11/07 [email protected] 1.0

REPOS="$1"
REV="$2"

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

/usr/local/svn/bin/svn update /www/cdstm --username xxx --password xxx
if [ $?==0 ]
then
        echo -e "ok" >> /opt/svnlog/log.txt
else
        echo -e "false" >> /opt/svnlog/log.txt
fi
exit 0
---------------------------------------------------------------------------------------------------------
编辑完成后,保存。然后我们就可以测试了。呵呵。就这么简单。
注意:1、REPOS="$1"  表示svn仓库的绝对路径值,以我为例:/opt/svndata/test
                REV="$2"        表示最新的一个版本号。最后一个版本号
         这两个变量是
post-commit自动接收的。
    2、在这里执行svn指令的时候采用了绝对路径,而不是通过PATH将svn指令的路径包含进来,是为了防止Linux已经自带安装了svn指令。

猜你喜欢

转载自student-lp.iteye.com/blog/2097212