Linux SVN服务器如何自动向Web服务器提交数据进行同步
在本地开发过程中,我们使用TortoiseSVN向SVN服务器提交修改的数据,但是SVN服务器中的数据需要checkout到Web服务器,这样Web服务器中的数据才能与SVN同步,手工操作太麻烦。我们可以使用SVN的hooks机制进行如下同步:
导出一份SVN文件到网站目录
svn co svn://localhost/svn1 /www/web/weixin
svn://localhost/svn1为服务器SVN所在路径
/www/web/weixin为网站目录路径
注意事项1:
每次使用svn co提醒你是否保存密码,这样每次都会出现交互提示信息,我们需要去掉。
修改/root/.subversion/server中的相关内容为:
store-passwords = no
store-plaintext-passwords = no
注意事项2:
如遇到UUID不一致错误信息,可采用以下解决方法:
svn: Repository UUID ‘4ecc44b9-f3ad-4d43-b838’ doesn’t match expected UUID ‘7699d06a-2fa1-49ae-958b’
解决方案:
具体办法如下:
1、首先查看项目的所有者的UUID
# svnlook uuid /www/svn1
xxxxxxx
2、更新项目的UUID
# svnadmin setuuid /www/svn1 xxxxxxx
3、查看一下更新后的UUID
# svnlook uuid /www/svn1
修改SVN中post-commit.tmpl文件
cd /www/svn1/hooks
mv post-commit.tmpl post-commit
更改post-commit权限:
chmod +x post-commit
编辑post-commit文件:
vi post-commit
post-commit文件内容如下:
#!/bin/sh
REPOS=”$1″
REV=”$2″
export LANG=zh_CN.UTF-8 #防止乱码
svn update /www/web/weixin #更新svn
echo `date`,`whoami`,$REPOS,$REV >> //www/svn1/hooks/svn_hook.log #记录时间日志信息
chown -R www:www /www/web/weixin #更改网站目录用户组及用户
完成之后,结束svn进程
killall svnserve
重启SVN服务
svnserve -d -r /www
再使用TortoiseSVN提交新的修改,SVN和Web服务器中的数据都同步成功。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/115364.html<