Linux 下SVN提交同步web目录方法
- 2018-09-10 19:00:00
- 小熊 原创
- 9498
多人协作开发项目的时候,我们需要使用版本控制系统,通常我们会选择SVN。如何在Linux系统上搭建SVN服务器,我们可移步《 Linux下搭建SVN方法详解》,然而我们在搭建好SVN后,提交版本怎样快速同步到web测试环境呢?
SVN里面有一神器,钩子,就是版本库事件(代码提交、属性修改等等)触发的程序脚本。每一个版本库下面都有一个hooks目录(钩子目录),其中以.tmpl结尾的文件是模板。
钩子类型
start-commit
在提交事务产生前运行,用来判定一个用户是否有权提交。版本库传给该程序两个参数:到版本库的路径,和要进行提交的用户名。程序返回一个非零值可以在事务产生前停止该提交操作。pre-commit
在事务完成提交之前运行。版本库传递两个参数到程序:版本库的路径和正在提交的事务名称。程序返回非零值,提交会失败,事务也会删除。post-commit
在事务完成后运行,创建一个新的修订版本。可以用这个钩子来同步测试环境的代码或者发送电子邮件。版本库传给程序两个参数:到版本库的路径和被创建的新的修订版本号。退出程序会被忽略。
pre-revprop-change
在对版本库修改Subversion的版本属性时运行,版本库给钩子传递四个参数:到版本库的路径,要修改属性的修订版本,经过认证的用户名和属性自身的名字。
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目录设置
注意事项
字符编码 : export.utf-8
WEB目录要正确,根据您自己的版本库对应的web目录。
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 |