# svnadmin create /data/svn/test.ttlsa.com3.2 创建svn钩子post-commit
# vim /data/svn/test.ttlsa.com/hooks/post-commit#!/bin/bash# DateTime:2013-05-16 14:58:33# AuthorName: Deng Yun# description:用于实时检出的钩子# 基本变量export LANG=en_US.UTF-8dateTime=`date +%F`dateTimeMinute=`date +%H%M%S`binSvn=/usr/local/subversion-1.8.5/bin/svn # 你svn的绝对路径dirHtmlApp=/data/site/test.ttlsa.com #检出的web站点根目录logFileName=/tmp/svnhooks_${dateTime}.log# svn配置REPOS="$1"REV="$2"# 检出或者更新subversion,钩子的核心功能echo "-- $dateTimeMinute" >> $logFileNameif [ ! -d $dirHtmlApp/.svn ]; then # 检出SVN echo "$binSvn co file://$REPOS/ $dirHtmlApp" >> $logFileName $binSvn co file://$REPOS/ $dirHtmlApp if [ $? -eq 0 ]; then echo "checkout ok" >> $logFileName else echo "checkout error" >> $logFileName fielse # 更新svn echo " $binSvn up $REV $dirHtmlApp " >> $logFileName $binSvn up $REV $dirHtmlApp >> $logFileName if [ $? -eq 0 ]; then echo " update sucess " >> $logFileName else echo " update fial " >> $logFileName fifiecho "--" >> $logFileName给执行权限
# chmod a+x /data/svn/test.ttlsa.com/hooks/post-commit3.3 检出代码 [caption id="attachment_4200" align="alignnone" width="468"] 1 - 检出[/caption] 3.4 提交代码 在目录中新建index.php文件,内容如下:
然后提交到svn上 [caption id="attachment_4201" align="alignnone" width="618"] 2 - 提交[/caption] 4. 实时测试php 访问http://test.ttlsa.com/index.php,如下图 [caption id="attachment_4202" align="alignnone" width="518"] 3 - 测试[/caption] 5. 总结 思路很简单,不仅仅php可以这么做,其他程序也可以使用钩子来实现。一般情况下,推荐使用svn+钩子取代ftp传代码的方式,这样备份的问题解决了,恢复版本也相对方便。 站点:运维生存时间(转载请注明出处) 网址:http://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/