如何利用SVN更新网站全程报道

开发 项目管理
本文和大家共同学习一下如何利用SVN更新网站问题,SVN是版本控制软件,现在用途也比较广泛,一起来看一下如何用SVN更新网站吧。

本节简单讨论一下利用SVN更新网站,和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西。如果你有一个假设在公网上的SVN服务器,而你的网站所在的主机允许你使用SVN客户端,并且开放了php的exec函数,那么你有福了,你可以利用SVN作为中转,更新你的网站程序。

首先,也是前提,就是你的网站程序是用SVN管理的,那么只要你的网站主机能够访问SVN,就能够使用SVN的update功能来更新程序。

SVN更新网站准备工作一:将网站程序加上svn的控制标记,由于SVN的控制信息都存在程序所在目录的.svn子目录中,所以需要找一个空目录,并且将网站现有程序checkout到这个目录里面来,注意是checkout而不是export,因为接下来要将最新的网站程序连同他里面包含的很多个.svn目录一同上传到服务器上去。为了不让.svn目录泄露机密,要在.htaccess文件或者是httpd.conf中设定如下规则,禁止对.svn目录的访问。
OrderAllow,Deny
Denyfromall

SVN更新网站准备工作二:作一段小程序,调用服务器上的svn命令行命令,update网站程序,下面是一个写好了的简单例子。

//setupupdatetargetpath  
$target_ar[’fwolf’]=‘d:fwolf’;//setupcommandline  
$svn_cmd1=‘d:serversvnbinsvn.exeupdate‘;  
$svn_cmd2=‘–usernameupdatebot–passwordxxxxxx–no-auth-cache’;  
//outputhtmlstring  
$html=”;  
//recievegetparameter  
$target=isset($_GET[’target’])?$_GET[’target’]:”;  
if(empty($target)||!isset($target_ar[$target]))  
{$html=‘Targetdoesnotcorrect.’;}  
else  
{//executesvnupdatecommand  
$cmd=$svn_cmd1.$target_ar[$target].$svn_cmd2;  
$ar=array();  
$status=0;  
exec($cmd,$ar,$status);  
for($i=0;$i $ar[$i]=htmlspecialchars($ar[$i]);  
$html.=‘Status:‘.$status.“  
rn”;  
$html.=implode(’  
’.“rn”,$ar);  
}  
echo$html;  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.

把这个程序放到服务器上能够访问到的地方,也可以在此基础上加上一些访问限制,那么只要访问这个程序/页面,服务器就会自动更新你的网站啦。
Status:0
DH:cvsworksvntestupdate_from_svn.php
Updatedtorevision44.这样,在利用SVN很好的管理网站程序的基础上,还实现了服务器程序的很方便的更新,一举两得!尤其是在程序上传不是十分方便的场合,用起来就更舒服了,我就是在更换了一个劣质防火墙,ftp无法正常使用的情况下想出这个怪招儿的:-)。

Update@2007-07-31
SVN更新网站时如果在windows主机上使用本方法,而svn服务器是采用了ssl的https://…地址,那么会遇到一点小麻烦,就是在执行svnupdate的时候,由于使用的是web的用户,在出现确认证书的提示信息时,用户是无法输入的:
Errorvalidatingservercertificatefor'https://20070731.fwolf.com':-Thecertificateisnotissuedbyatrustedauthority.Usethefingerprinttovalidatethecertificatemanually!Certificateinformation:-Hostname:20070731.fwolf.com-Valid:fromJul3106:49:532007GMTuntilJul2806:49:532017GMT-Issuer:Fwolf,US-Fingerprint:38:43:0b:29:75:1t:ba:d8:29:8f:94:9a:10:42:a0:fe:ae:93:4d:91(R)eject,accept(t)emporarilyoraccept(p)ermanently?

这时就只能用变通的方法了,首先在dos方式中使用svnup,svn会自动缓存身份验证以及ssl确认信息,这些信息保存在C:DocumentsandSettingsAdministratorApplicationDataSubversion目录下,然后把这个目录整体拷贝到C:DocumentsandSettingsDefaultUserApplicationDataSubversion就可以了,测试环境windows2003,并且试过复制到AllUsers的对应目录无效。
另外修改配置文件servers,添加ssl-trust-default-ca=yes的方式在windows下好像没有作用。

ThisentrywaspostedonThursday,January19th,2006at2:10:16andisfiledunderInternet,Subversion.YoucanfollowanyresponsestothisentrythroughtheRSS2.0。本节SVN更新网站介绍完毕。

 【编辑推荐】

  1. Linux下不常用的SVN 命令大揭秘
  2. Subversion和TortoiseSVN如何在Windows下进行构建SVN版本控制
  3. 最新MPlayerSVN汉化精简版上市
  4. SVN使用教程简单配置篇详解
  5. 在线指导:Windows系统服务自动运行对于SVN如何实现

 

责任编辑:佚名
相关推荐

2010-05-28 19:15:53

2010-05-24 11:16:43

SVN更新URL

2010-06-03 15:25:31

Hadoop Hdfs

2010-05-24 11:27:20

SVN配置自动更新WE

2010-06-04 10:35:14

2010-05-28 14:46:44

SVN操作

2010-06-02 14:41:46

SVN建库

2010-05-24 12:53:38

子命令SVN merg

2010-05-20 09:41:07

MyEclipse下配

2010-05-31 19:02:17

访问SVN

2010-05-24 17:13:17

SVN安装

2010-05-25 15:59:45

2010-05-25 15:22:30

NetBeans SV

2010-05-19 15:15:24

Apache+SVN部

2010-05-25 14:54:18

2019-07-15 14:49:16

网络安全云计算软件

2010-05-25 18:59:37

2009-12-14 20:05:05

内容

2010-05-20 14:25:31

SVN客户端常用命令

2023-09-28 10:29:04

云应用云仓库
点赞
收藏

51CTO技术栈公众号