svn提交自动同步到web目录

Posted 孙磊elisun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了svn提交自动同步到web目录相关的知识,希望对你有一定的参考价值。

环境:CentOS6.5  测试线   svn和web服务器在同一台机器上   SVN版本1.6

情景:在测试环境下,开发部提出希望提交到SVN的代码能自动同步到WEB站点目录下,解决每次都要传双份这一问题,尤其是频繁更新后的繁琐,浪费了大量时间。

思路:通过搜索,查到svn的hooks目录的触发功能,该目录下有许多模板,其中一个是post-commit.tmpl,意为“提交后执行”,通过这个功能我们可以将提交代码后要做的事写到里面来执行。

步骤:

1. 首先导出一份svn的文件到网站目录

# svn co file:///data/svn/php/ /data/wwwroot/

2. 修改“提交后执行文件”post-commit.tmpl

# cd /data/svn/php/hooks

# mv post-commit.tmpl  post-commit

# chmod +x post-commit

# cat post-commit

#!/bin/sh
SVN=/usr/bin/svn
WEB=/data/wwwroot
LOG_PATH=/tmp/svn_hook.log
echo "------------Start Commit -----------" >> $LOG_PATH
echo "Time:"`date +%Y-%m-%d %T`>>$LOG_PATH
export LANG=zh_CN.UTF-8 #防止乱码 
for DIR in `svnlook dirs-changed /data/svn/php/`
do $SVN update $WEB/$DIR
done

chown -R www.www /data/wwwroot

 

备注:由于文件太多太大,第一次做的时候SVN和WEB不在同一台机器,而且没有进行提交优化,所以SVN提交后巨卡(10秒到30秒)!

笔者在此文中写的已是进行了两步优化后的结果,优化的内容为以下两点:

① 将SVN和WEB放到了同一台机器,比提交后触发rsync有所加快,并且不依赖网络。

② 通过“svnlook dirs-changed  网站目录”,打印出SVN更新了哪些目录,svn update只针对这些目录,节省了全局扫描浪费掉的时间!

优化后平均提交后响应时间在3秒内!

 

以上是关于svn提交自动同步到web目录的主要内容,如果未能解决你的问题,请参考以下文章

svn利用钩子脚本功能实现代码同步到web目录

如何利用svn自动同步更新到网站服务器

SVN服务器搭建

CentOS 创建SVN 服务器,并且自动同步到WEB 目录

微信开发之SVN提交代码与FTP同步到apache的根目录

CentOS6.8 搭建SVN并用钩子自动实现同步到web目录