原理:在svn服务端编写post-commit钩子,当svn客户端更新svn时,服务端会自动执行钩子脚本,在web目录自动执行svnup命令同步最新文件。

方式一:

  利用svn update命令------svn update svn://192.168.1.1 /data/www/htdocs

  编写钩子脚本vim /data/svn/repositories/hooks/post-commit

  

#!/bin/sh
export LANG=en_US.UTF-8
REPOS="$1"
REV="$2"
SVN_PATH=/usr/bin/
WEB_PATH=/data/www/xingame
SVN_USER=test
SVN_PASS=ptest
WEB_USER=www
LOG_PATH=/data/log/svn/svn.log
echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
$SVN_PATH/svn update svn://192.168.1.69:3690/xingame $WEB_PATH --force  --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH
chown $WEB_USER.$WEB_USER -R $WEB_PATH
#同步多台服务器
cd /data/www/htdocs/
/usr/bin/rsync --timeout=30 -Ravz --exclude-from=/data/svn/repositories/exclude/htdocs.list ./*  192.168.1.2::htdocs
/usr/bin/rsync --timeout=30 -Ravz --exclude-from=/data/svn/repositories/exclude/htdocs.list ./*  192.168.1.3::htdocs
chown -R apache:apache /data/www/htdocs/
chmod -R 755 /data/www/htdocs/
#htdocs.list是存放不被同步的文件,包括子目录下出现此类文件都不会被同步
#往htdocs.list加入.svn这样只要包含.svn的目录都不会被同步 
View Code

相关文章: