Linux 下SVN提交同步web目录方法

2018-09-10 19:00:00
小熊
原创
7782
摘要:多人协作开发项目的时候,我们需要使用版本控制系统,通常我们会选择SVN。然而我们在搭建好SVN后,提交版本怎样快速同步到web测试环境呢?

多人协作开发项目的时候,我们需要使用版本控制系统,通常我们会选择SVN。如何在Linux系统上搭建SVN服务器,我们可移步《 Linux下搭建SVN方法详解》,然而我们在搭建好SVN后,提交版本怎样快速同步到web测试环境呢?

SVN里面有一神器,钩子,就是版本库事件(代码提交、属性修改等等)触发的程序脚本。每一个版本库下面都有一个hooks目录(钩子目录),其中以.tmpl结尾的文件是模板。

SVN钩子目录

钩子类型

  1. start-commit


    在提交事务产生前运行,用来判定一个用户是否有权提交。版本库传给该程序两个参数:到版本库的路径,和要进行提交的用户名。程序返回一个非零值可以在事务产生前停止该提交操作。
  2. pre-commit

    在事务完成提交之前运行。版本库传递两个参数到程序:版本库的路径和正在提交的事务名称。程序返回非零值,提交会失败,事务也会删除。
  3. post-commit

    在事务完成后运行,创建一个新的修订版本。可以用这个钩子来同步测试环境的代码或者发送电子邮件。版本库传给程序两个参数:到版本库的路径和被创建的新的修订版本号。退出程序会被忽略。
  4. pre-revprop-change

    在对版本库修改Subversion的版本属性时运行,版本库给钩子传递四个参数:到版本库的路径,要修改属性的修订版本,经过认证的用户名和属性自身的名字。
  5. post-revprop-change

    与pre-revprop-change对应。只有存在pre-revprop-change时这个脚本才会执行。当这两个钩子都存在时,post-revprop-change在修订版本属性被改变之后运行,版本库传递四个参数给该钩子:到版本库的路径,属性存在的修订版本,经过校验的产生变化的用户名,和属性自身的名字。

SVN提交同步WEB环境

复制一份post-commit.tmpl为post-commit,修改post-commit文件。

cp post-commit.tmpl post-commit
vi post-commit

删除post-commit里面内容或者加上以下内容:

#!/bin/sh
#修改为服务编码
export.utf-8
#Set variable
REPOS="$1"    # 这是有SVN传过来的第一个参数,仓库位置
REV="$2"      # 这是有SVN传过来的第二个参数,新的版本号
#SVN=/usr/bin/svn
WEB=/data/wwwroot/site/site
#LOG=/var/svn/site/hooks/post-commit.log
#update the code from the SVN
svn update $WEB --username your username --password your password
chown -R www.www /var/svn/site/hooks/post-commit # 根据您自己的hook目录设置
chmod +x /var/svn/site/hooks   # 根据您自己的hook目录设置

注意事项

  1. 字符编码 : export.utf-8

  2. WEB目录要正确,根据您自己的版本库对应的web目录。

  3. your username  登录SVN服务账号,your password 登录SVN服务密码

如果想要记录日志,添加如下代码

if [ $? == 0 ]
then
    echo  "$REPOS" "$REV" >> $LOG
    echo `date` >> $LOG
    echo "##############################" >> $LOG
fi

打开上面的LOG注释。

可能你会出现web目录还是没有同步问题,这时候你需要手动checkout一下。方法如下:

到你填写的WEB那里的上一层目录:

cd /data/wwwroot/site/
svn checkout svn://你的ip/site
文章分类
联系我们
联系人: 小熊
电话: 18037578880
Email: admin@cnsite.org
QQ: 929410000
微信: itseor
微博: itseoer
网址: www.beatmoon.com