php 做测试 传 post,svn + post-commit 实时测试php代码

在开发环境中,一般是程序本地测试->服务器测试环境->正式发布上线,程序员本地写完并且测试完毕之后,提交到svn上,希望实时看提交代码后的效果。有些开发者手动检出到web站点下测试,最后发布到服务器上,这需要花费不少时间,本文将讲诉使用svn在钩子实时展示出代码的效果.

1. 环境准备

基于apache验证的svn

svn域名:http://svn.ttlsa.com:801

web站点

根目录/data/site/test.ttlsa.com/

2. 流程

首先创建svn版本库/data/svn/test.ttlsa.com,然后在svn库中创建svn钩子,在开发电脑上检出最初版本,并且将自己的代码提交到svn上,此时svn钩子将会把代码实时检出/更新到/data/site/test.ttlsa.com站点目录中。最后访问浏览器测试

3. svn配置

3.1 创建svn版本库

# svnadmin create /data/svn/test.ttlsa.com

1

# svnadmin create /data/svn/test.ttlsa.com

3.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-8

dateTime=`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" >> $logFileName

if [ ! -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

fi

else

# 更新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

fi

fi

echo  "--" >>  $logFileName

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

# vim /data/svn/test.ttlsa.com/hooks/post-commit

#!/bin/bash

# DateTime:2013-05-16 14:58:33

# AuthorName: Deng Yun

# description:用于实时检出的钩子

# 基本变量

exportLANG=en_US.UTF-8

dateTime=`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">>$logFileName

if[!-d$dirHtmlApp/.svn];then

# 检出SVN

echo"$binSvn co file://$REPOS/  $dirHtmlApp">>$logFileName

$binSvncofile://$REPOS/  $dirHtmlApp

if[$?-eq0];then

echo "checkout ok" >>$logFileName

else

echo "checkout error"  >> $logFileName

fi

else

# 更新svn

echo" $binSvn up $REV $dirHtmlApp ">>$logFileName

$binSvnup$REV$dirHtmlApp  >>$logFileName

if[$?-eq0];then

echo "  update sucess " >>$logFileName

else

echo "  update fial "  >> $logFileName

fi

fi

echo "--">> $logFileName

给执行权限

# chmod a+x /data/svn/test.ttlsa.com/hooks/post-commit

1

# chmod a+x /data/svn/test.ttlsa.com/hooks/post-commit

3.3 检出代码

558f6feca3b9de0b24966acb35c50b4d.png

1 - 检出

3.4 提交代码

在目录中新建index.php文件,内容如下:

echo 'svn - ttlsa.com';

?>

1

2

3

echo'svn - ttlsa.com';

?>

然后提交到svn上

639f824a73aee0b2e3d60f3bc13ccd4d.png

2 - 提交

4. 实时测试php

访问http://test.ttlsa.com/index.php,如下图

2f01a4226dffbafb2c8d62d7f5037239.png

3 - 测试

5. 总结

思路很简单,不仅仅php可以这么做,其他程序也可以使用钩子来实现。一般情况下,推荐使用svn+钩子取代ftp传代码的方式,这样备份的问题解决了,恢复版本也相对方便。

站点:运维生存时间(转载请注明出处)

网址:http://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值