[转]利用SVN更新网站
来源:互联网 发布:淘宝红包口令 编辑:程序博客网 时间:2024/06/10 16:42
如果你有一个假设在公网上的SVN服务器,而你的网站所在的主机允许你使用SVN客户端,并且开放了php的exec函数,那么你有福了,你可以利用SVN作为中转,更新你的网站程序。
首先,也是前提,就是你的网站程序是用SVN管理的,那么只要你的网站主机能够访问SVN,就能够使用SVN的update功能来更新程序。
准备工作一:将网站程序加上svn的控制标记,由于SVN的控制信息都存在程序所在目录的.svn子目录中,所以需要找一个空目录,并且将网站现有程序checkout到这个目录里面来,注意是checkout而不是export,因为接下来要将最新的网站程序连同他里面包含的很多个.svn目录一同上传到服务器上去。为了不让.svn目录泄露机密,要在.htaccess文件或者是httpd.conf中设定如下规则,禁止对.svn目录的访问。
Order Allow,DenyDeny from all
准备工作二:作一段小程序,调用服务器上的svn命令行命令,update网站程序,下面是一个写好了的简单例子。
//setup update target path$target_ar['fwolf'] = 'd:/fwolf'; //setup commandline$svn_cmd1 = 'd:/server/svn/bin/svn.exe update ';$svn_cmd2 = ' --username updatebot --password xxxxxx --no-auth-cache'; //output html string$html = ''; //recieve get parameter$target = isset($_GET['target']) ? $_GET['target'] : '';if (empty($target) || !isset($target_ar[$target])){$html = 'Target does not correct.';}else{//execute svn update command$cmd = $svn_cmd1 . $target_ar[$target] . $svn_cmd2;$ar = array();$status = 0;exec($cmd, $ar, $status);for ($i=0; $i < count($ar); $i++)$ar[$i] = htmlspecialchars($ar[$i]);$html .= 'Status: ' . $status . "
/r/n";$html .= implode('
' . "/r/n", $ar);}echo $html;
把这个程序放到服务器上能够访问到的地方,也可以在此基础上加上一些访问限制,那么只要访问这个程序/页面,服务器就会自动更新你的网站啦。
Status: 0D H:/cvswork/svntest/update_from_svn.phpUpdated to revision 44.
这样,在利用SVN很好的管理网站程序的基础上,还实现了服务器程序的很方便的更新,一举两得!尤其是在程序上传不是十分方便的场合,用起来就更舒服了,我就是在更换了一个劣质防火墙,ftp无法正常使用的情况下想出这个怪招儿的:-)。
Update @ 2007-07-31
如果在windows主机上使用本方法,而svn服务器是采用了ssl的https://…地址,那么会遇到一点小麻烦,就是在执行svn update
的时候,由于使用的是web的用户,在出现确认证书的提示信息时,用户是无法输入的:
Error validating server certificate for 'https://20070731.fwolf.com': - The certificate is not issued by a trusted authority. Use the fingerprint to validate the certificate manually!Certificate information: - Hostname: 20070731.fwolf.com - Valid: from Jul 31 06:49:53 2007 GMT until Jul 28 06:49:53 2017 GMT - 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)emporarily or accept (p)ermanently?
这时就只能用变通的方法了,首先在dos方式中使用svn up
,svn会自动缓存身份验证以及ssl确认信息,这些信息保存在C:/Documents and Settings/Administrator/Application Data/Subversion
目录下,然后把这个目录整体拷贝到C:/Documents and Settings/Default User/Application Data/Subversion
就可以了,测试环境windows2003,并且试过复制到All Users
的对应目录无效。
另外修改配置文件servers
,添加ssl-trust-default-ca = yes
的方式在windows下好像没有作用。
Update @ 2009-04-07
Git(ssh证书登录)也可以这样用,略有不同,我使用的客户端是msysgit:
- Admin用户使用桌面操作(Git Bash)时,
.ssh
目录位于C:/Documents and Settings/Administrator/
下。 - 直接使用
C:/Program Files/Git/bin/ssh.exe
当ssh客户端时,.ssh
目录要放到C:/Program Files/Git/
下,并且似乎忽略.ssh/config
文件,私钥文件只认identity id_rsa id_dsa
三个。 - 系统服务比如Apache运行时,使用上面一条的设置,很是诡异。
说公钥文件只认固定的三个,是从这里猜到的:
Program Files/Git$ grep identity share -Rshare/git-gui/lib/sshkey.tcl: foreach name {~/.ssh/id_dsa.pub ~/.ssh/id_rsa.pub ~/.ssh/identity.pub} {
好像是写死了,并且我用config定义其他私钥它也不认。第一条中使用Git的时候没事,很正常。
同时,为了安全起见,apache里还要增加如下设置:
Order allow,denyDeny from allSatisfy All
- [转]利用SVN更新网站
- 如何利用svn自动同步更新到网站服务器
- SVN+网站服务器同步更新
- SVN 网站服务器同步更新
- SVN资源同步更新到网站
- 利用SVN快速更新[文件或新版本]至LINUX服务器
- 利用svn钩子进行客户端更新并打印日志
- 利用svn log命令实现的资源版本更新
- 利用SVN的钩子同步更新代码的方法详解
- 利用 VisualSVN 自动同步更新到网站服务器 的方法
- svn更新
- 网站更新!
- 【转】利用SVN搭建测试服务器
- php利用内置的svn函数实现的svn版本号的提交、更新、删除、恢复等功能
- 利用ant从svn更新项目编译打包并发布项目的脚本
- 原来利用SVN的钩子函数可以实现自动的版本更新管理
- ANT发布SVN WEB项目到TOMCAT以及利用post-commit自动提交编译更新
- ANT发布SVN WEB项目到TOMCAT以及利用post-commit自动提交编译更新
- symbian s60应用程序框架
- ARM入口代码分析
- 零打碎敲学Android(二)—做个拼图游戏吧
- 一个简单的死锁例子
- Group Items in Delphi's TListView Control
- [转]利用SVN更新网站
- C#教学第19讲字符1(学习笔记)
- 加速浏览器控件的创建
- 奇数阶魔方阵
- 应CSDN之邀参加SD2.0大会
- 协程与微线程——概念篇
- Print Documents From Delphi - Print PDF, DOC, XLS, HTML, RTF, DOCX, TXT
- LINK : fatal error LNK1104: 无法打开文件“C:/XXX.obj”
- 泩活 ㄚi 成卟変