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

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

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

步骤:

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

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

注:file:///data/svn/php/ 表示php的svn代码在该Linux系统中的系统路径。

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目录的更多相关文章

  1. [转]svn提交自动同步到web服务器

    参考博文:http://my.oschina.net/wddqing/blog/201567 同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post ...

  2. centos搭建svn 服务器 并同步到web 目录(总结)

    配置搭建步骤: Linux平台的SVN服务器的配置及搭建 从本地提交代码到svn代码库. 将代码库中代码同步到web目录: 1.在web目录中checkout版本库 进入/home/www目录下  ( ...

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

    CentOS 创建SVN 服务器,并且自动同步到WEB 目录 标签: centossvnsubversion服务器 2013-12-06 10:09 5492人阅读 评论(0) 收藏 举报  分类: ...

  4. Centos7下搭建SVN服务,本地提交代码自动同步到WEB目录

    1.安装SVN服务[root@bogon ~]# yum -y install subversion 2.查看svnserve安装目录[root@bogon ~]# whereis svnserves ...

  5. CentOS下安装配置SVN服务器并自动同步到web目录

    一.安装 yum install subversion测试是否安装成功 /usr/bin/svnserve --version如提示以下内容,说明已安装成功 svnserve,版本 1.6.11 (r ...

  6. SVN 钩子操作-同步更新web目录

    一个简单的钩子演示:也可以网上搜索其他高级的 本次想要达到的功能是:每次用户commit 到仓库后,仓库的钩子会自动把程序又更新的www/的web发布目录 1.现在web目录下创建一个test.com ...

  7. centos搭建svn服务器并同步到web目录

    yum install subversion mkdir -v /root/svn cd /root/svn svnadmin create web cd web/conf/ vi passwd te ...

  8. 在linux上搭建SVN服务器并自动更新至WEB目录

    1.仓库放在 /var/svn/ 目录下,并且仓库名为 project 2.创建用户组user,该组下添加两个成员user1.user2,密码直接用用户名,两用户可以checkout代码和提交代码 3 ...

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

    一 安装 yum install subversion 二 检查是否安装成功 svn --version 三 创建仓库目录 mkdir –p /home/svnroot/test 四 创建项目 svn ...

随机推荐

  1. input 字符限制

    1,文本框只能输入数字代码(小数点也不能输入): onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste=&q ...

  2. bzoj3905: Square

    Description Nothing is more beautiful than square! So, given a grid of cells, each cell being black ...

  3. 请使用-Xlint:deprecation重新编译

    [已解决]Android Studio编译OsmAnd出现警告:GeoPointParserUtil.java使用或覆盖了已过时的 API.有关详细信息请使用-Xlint:deprecation重新编 ...

  4. sbt设置

    配置中央仓库 vim ~/.sbt/repositories [repositories] local osc: http://maven.oschina.net/content/groups/pub ...

  5. [Android NDK/JNI-1A]-开发环境搭建

    NDK简介 NDK能干什么:NDK使得在android中,java可以调用C 函数库. 1.Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意 ...

  6. Hbase的安装(hadoop-2.6.0,hbase1.0)

    Hbase的安装相对很简单啊...只要你装了Hadoop 装Hbase就是分分钟的事 如果要装hadoop集群的话 hadoop分类的集群安装好了,如果已经装好单机版~ 那就再配置如下就好~ 一.vi ...

  7. [实变函数]3.1 外测度 (outer measure)

    1 并不是所有的集合都可求测度. 我们的想法是先对 $\bbR^n$ 中的任一集合定义一个``外 测度'' (outer measure), 然后再加上适当的条件 (Caratheodory 条件), ...

  8. 用happen-before规则重新审视DCL(转)

    编写Java多线程程序一直以来都是一件十分困难的事,多线程程序的bug很难测试,DCL(Double Check Lock)就是一个典型,因此对多线程安全的理论分析就显得十分重要,当然这决不是说对多线 ...

  9. “/wechat”应用程序中的服务器错误。

    对路径“C:\inetpub\wwwroot3\wechat\img\qrcode\”的访问被拒绝. “/wechat”应用程序中的服务器错误. 对路径“C:\inetpub\wwwroot3\wec ...

  10. 高可用集群heartbeat全攻略

    heartbeat的概念   Linux-HA的全称是High-Availability Linux,它是一个开源项目,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(r ...