实现SVN版本库与WEB目录同步的解决方案

1. svn安装目录(bin目录)

 /usr/bin/svn  (这是svn命令目录) 
 

2. 使用“钩子”实现自动同步svn版本库文件到web目录—–实现SVN与WEB同步解决方案

 
1) 设置WEB服务器根目录为  /home/wwwroot/default 
2) checkout一份SVN
   svn co svn://localhost /home/wwwroot/
3) 修改权限为WEB用户
   chown -R www:www   /opt/svn/blog 
4) 建立同步脚本
   cd /opt/svn/blogs/hooks/ 

方案一:

vi post-commit 输入以下内容: 

 
#!/bin/sh
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
svn update /home/wwwroot/ --username svnname --password svnpassword

方案二:

 
cp post-commit.tmpl   post-commit  重命名 post-commit.tmpl该模板文件 

编辑post-commit,在文件最后添加以下内容 

 
#!/bin/sh
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
SVN=/usr/bin/svn #这是svn命令目录
WEB=/www/web/ #这是web目录
svn update /home/wwwroot/ --username svnname --password password chown -R www:www $WEB
 
增加脚本执行权限 chmod +x post-commit 如果不成功 尝试一下方法,在命令后面加上 --no-auth-cache
$SVN update $WEB –username test–password test --no-auth-cache 对文件执行chmod +x post-commit操作
最后操作是关闭服务然再打开服务:
svn服务的关闭:killall svnserve svn
svn服务的开启:svnserve -d -r /opt/svn/hsblogs

可以生成日志来记录版本更新情况 文件内容为:

 
#!/bin/sh
export LANG=zh_CN.UTF-8
REPOS="$1"
REV="$2"
SVN_PATH=/usr/bin/svn
WEB_PATH=/home/wwwroot/
LOG_PATH=/home/wwwlogs/svn_update.log
echo "##########开始提交 " `date "+%Y-%m-%d %H:%M:%S"` '##################' >> $LOG_PATH
echo `who`,$REPOS,$REV >> $LOG_PATH
$SVN_PATH update --username svnname --passwordpassword$WEB_PATH --no-auth-cache >>$LOG_PATH
chown -R www:www $WEB_PATH

说明:

1、#!/bin/sh 说明是执行shell命令 。

2、export LANG=zh_CN.UTF-8 是为了解决svn post commit 中文乱码。 

3、svn update –username 你版本库的用户名 –password 用户名的密码。

4、chown -R www:www $WEB_PATH 更改文件夹属主,执行shell命令,每次commit完成后都会调用此文件。

原创文章,转载请注明: 转载自HSBLOG

本文链接地址: 实现SVN版本库与WEB目录同步的解决方案