Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2125540
  • 博文数量: 317
  • 博客积分: 5670
  • 博客等级: 大校
  • 技术积分: 3677
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-10 17:51
文章分类

全部博文(317)

文章存档

2016年(2)

2015年(44)

2014年(68)

2013年(42)

2012年(23)

2011年(51)

2010年(67)

2009年(17)

2008年(3)

分类: LINUX

2011-05-23 15:14:39


我们知道要把svn的内容更新到web目录需要手动的svn up,但是今天笔者教你自动更新web目录的方法,我们要在svn版本库中配置钩子来实现,就是创

建一个post-commit的配置文件,对其进行简单的配置,简简单单的四步就可以实现Linux下SVN自动更新web目录配置。


第一步:建立你的web程序目录
mkdir /var/www/html/test

然后在存放svn配置文件的目录下 如/opt/svn 执行

1.svnadmin create test  //test为svn配置文件,如conf目录,hooks目录等

2.在conf目录下找到 svnserver.conf

拷贝到文件如下内容

anon-access = none
auth-access = write
password-db = passwd

3.在conf目录下找到passwd 文件

输入用户名密码 test=test


3.进入/var/www/html/test目录。
   #svn checkout testsvn /var/www/html/test
   #svn co svn://172.19.5.12 ./               //检出一份版本库文件到当前目录


第二步:在项目库的 hooks/ 目录下新建 post-commit 文件 【钩子脚本】
添加脚本内容如下:


#!/bin/sh
SVN=/usr/bin/svn           #这里配置的是svn安装bin目录下的svn文件
WEB=/var/www/html/test     #要更新的目录
$SVN update $WEB --username xxx --password xxx


其中SVN=右边改成 svn 命令位置
WEB=右边改成你实际的web目录


第三步:让post-commit有执行的权限 chmod 777 post-commit   (一定要有)


第四步:这里就已经完成了,

第四步就是测试了。

如果测试出现了 hoot out error 那就是 post-commit权限不够 看一下第三步就明白了

附参考
需求: 当开发人员提交网页代码后,自动化的实现部署到apache服务器。


参考文档:

  R1:

  R2:

  R3:

  R4:http://hi.baidu.com/bigeyex/blog/item/9f7ac600e8823319728b65b6.html

实现过程,是使用了svn的一个hook的功能,我们调用了 post-commit 来做一些当提交完成后的操作。

1. 编辑svn代码库服务器上文件: svn/test/hooks/post-commit

#!/bin/sh

REPOS
="$1"
REV
="$2"
export PATH
="/usr/local/svn/bin:$PATH"  #由于代码是apache的进程用户www运行,所以需要设置环境变量
export LC_CTYPE
=en_US.UTF-8             #防止提交的文件名存在非字母字符。 
if (svnlook log -$REV /home/http/repository/svn/test | grep "auto_deploy" )  #当用户提交时注释中写上"auto_deploy"的时候,就自动部署到apache目录,否则不部署。
then
  echo 
"`date` 'auto depoly command received" >> /tmp/test_svnautocommit.txt   #这一行仅作调试使用
  svn export 
""  /home/http/html/test_website  --force
fi

 2. 在客户端测试,并且要在comment中加入 auto_deploy,否则不会触发自动部署的操作。

阅读(1399) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~