svn自动同步配置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了svn自动同步配置相关的知识,希望对你有一定的参考价值。
参考技术A 打开: /svn/web/ysc/hooks ,找到 post-commit.tmpl, 修改内容为下:然后将文件更名为 post-commit ,没有 tmpl 后缀,重要事情说三遍;
另外务必授予 777 权限,不然也有可能跑不起来;
权限:chmod 777 post-commit
#!/bin/bash
REPOS="$1"
REV="$2"
export LANG=zh_CN.UTF-8
echo "Code Deployed at `date "+%Y-%m-%d %H:%M"`" >> /svn/web/ershop/hooks/deploy_log
/usr/bin/svn update --accept tf --username admin --password admin123 /www/web/ershop
chown -R www:www /www/web/ershop
chmod -R 777 /www/web/ershop
最后在liunx把项目先检出:
svn co svn://localhost/项目名称/
有时候检出可能会报 svn co出现svn: E170001: Authorization failed此类错误 如果遇到可在root根目录找到.subversion/auth目录里面的全部文件删除,再重新检出即可 建议不要用root账号登陆
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自动同步配置的主要内容,如果未能解决你的问题,请参考以下文章
CentOS 创建SVN 服务器,并且自动同步到WEB 目录