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秒内!

时间: 2024-10-12 07:09:34

svn提交自动同步到web目录的相关文章

Centos下SVN安装以及同步到web目录

一.安装 Yum –y install subversion 建立版本库目录 Mkdir –p /mnt/svn 建立svn库 Svnadmin create /mnt/svn/delieato 启动svn: Svnserve –d –r /mnt/svn 二.配置库 针对每一个库,其conf目录下有三个配置文件(authz.passwd.svnserve.conf) 1.  authz,设置用户组和用户权限 [group] smsyun = ddl,shl //创建一个smsyun的组,并制定

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

一.安装Subversion #yum install subversion 二,基本的SVN服务器配置 1,新建一个目录用于存储SVN所有文件# mkdir /home/svn 2,新建一个版本仓库# svnadmin create /home/svn/project 3,初始化版本仓库中的目录# mkdir project project/server project/client project/test (建立临时目录)# svn import project/ file:///home

linux资料整理之ubuntu配置svn服务器并且同步更新web目录

博客:http://lijinhuan.blog.51cto.com/ 微博:http://weibo.com/lijinhuanexperience 微信:xiaoleetongxue 需求: 把代码放到共同的服务器中去,然后可以通过软件自由的增加和修改代码,以方便共同协作,而不是像某一些小企业那样,把代码用qq传来传去进行覆盖更新. 解决办法: 搭建一台公共的服务器并且配置svn服务器.svn可以很好存放代码,实现上面的需求. 下面教大家在unbuntu中一步一步地去配置svn服务器,至于u

windows svn利用钩子实现代码同步到web目录

思路:  找 到SVN Server中的仓库(Repositories)文件夹的位置,在相应的项目文件夹中找到hooks文件夹.在该文件夹中添加一个post- commit文件:当有commit动作发生时(提交到SVN Server时)就会执行这个post-commit文件,在该文件实现数据的复制. 实例:  环境:SVN Server与测试用的Web Server在同一台Windows系统服务器上,SVN Server使用的是VisualSVN,Web Server使用的是Apache.项目的

搭建服务器上的GIT并实现自动同步到站点目录(www)

原文链接:http://blog.csdn.net/baidu_30000217/article/details/51327289  方便自己记住使用 前言:当我们想要实现几个小伙伴合作开发同一个项目,或者建立一个资源分享平台的时候,GIT就是一个很好的选择.当然,既然是一个共有平台,那么把这个平台放到个人计算机上明显是不合适的,因此就要在服务器上搭建GIT了.另一个需求是,我们在本地开发,然后推送到服务器上,并且自动同步到web站点目录,这样就可以直接看到网页效果了,这就要实现自动同步.下面我

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

安装subversion :     yum install -y  subversion 检查安装是否成功:  svn --version 创建仓库目录: mkdir -p /home/svn/test 创建项目:svnadmin create /home/svn/test 检查创建是否成功: (1)cd /home/svn/test (2) ll #查看生成文件 6.cd /home/svn/test/conf #进入目录有文件 authz ,passwd, svnserve.conf 7.

SVN提交后自动同步到web服务器【hooks的使用】

SVN项目的创建: 详细步骤:http://www.cnblogs.com/Mr-Wenyan/p/8972054.html hooks配置: 1.建立web服务器的目录 本人服务器目录在/usr/local/apache/htdocs ,所以,建立目录: mkdir TP 2.在svn仓库的hooks目录下,复制post-commit.tmpl为post-commit,并写入配置文件 #!/bin/sh REPOS="$1" REV="$2" TXN_NAME=&

SVN 提交后自动同步到 web 的根目录

在SVN 项目版本库的存储目录下的hooks 目录,新建立一个post-commit.bat 文件: @echo off SET REPOS=%1 SET REV=%2 SET DIR=%REPOS%/hooks SET PATH=%PATH%; SET WORKING=E:/www/要同步的目录 svn update %WORKING% --username 用户名 --password 密码 注意:以上方法必须把SVN服务器安装目录下的bin加入到path路径(环境变量[路径用';'分开])

centos 6.8 设置svn钩子同步至web目录

1.在web目录创建项目目录 mkdir ./opt/wwwroot/项目名称 2.使用svn检出项目文件 svn checkout svn://localhost:/项目名称 3.设置svn库中钩子实施同步操作 cd ./opt/svn/repos/项目名称/hooks #进入svn项目钩子管理目录 cp post-commit.tmpl post-commit #复制钩子文件使用post-commit chmod 755 post-commit #赋予权限 3.打开post-commit文件