如何利用SVN更新網(wǎng)站全程報道
本節(jié)簡單討論一下利用SVN更新網(wǎng)站,和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。如果你有一個假設(shè)在公網(wǎng)上的SVN服務(wù)器,而你的網(wǎng)站所在的主機允許你使用SVN客戶端,并且開放了php的exec函數(shù),那么你有福了,你可以利用SVN作為中轉(zhuǎn),更新你的網(wǎng)站程序。
首先,也是前提,就是你的網(wǎng)站程序是用SVN管理的,那么只要你的網(wǎng)站主機能夠訪問SVN,就能夠使用SVN的update功能來更新程序。
SVN更新網(wǎng)站準(zhǔn)備工作一:將網(wǎng)站程序加上svn的控制標(biāo)記,由于SVN的控制信息都存在程序所在目錄的.svn子目錄中,所以需要找一個空目錄,并且將網(wǎng)站現(xiàn)有程序checkout到這個目錄里面來,注意是checkout而不是export,因為接下來要將最新的網(wǎng)站程序連同他里面包含的很多個.svn目錄一同上傳到服務(wù)器上去。為了不讓.svn目錄泄露機密,要在.htaccess文件或者是httpd.conf中設(shè)定如下規(guī)則,禁止對.svn目錄的訪問。
Denyfromall
SVN更新網(wǎng)站準(zhǔn)備工作二:作一段小程序,調(diào)用服務(wù)器上的svn命令行命令,update網(wǎng)站程序,下面是一個寫好了的簡單例子。
- //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;
把這個程序放到服務(wù)器上能夠訪問到的地方,也可以在此基礎(chǔ)上加上一些訪問限制,那么只要訪問這個程序/頁面,服務(wù)器就會自動更新你的網(wǎng)站啦。
Status:0
DH:cvsworksvntestupdate_from_svn.php
Updatedtorevision44.這樣,在利用SVN很好的管理網(wǎng)站程序的基礎(chǔ)上,還實現(xiàn)了服務(wù)器程序的很方便的更新,一舉兩得!尤其是在程序上傳不是十分方便的場合,用起來就更舒服了,我就是在更換了一個劣質(zhì)防火墻,ftp無法正常使用的情況下想出這個怪招兒的:-)。
Update@2007-07-31
SVN更新網(wǎng)站時如果在windows主機上使用本方法,而svn服務(wù)器是采用了ssl的https://…地址,那么會遇到一點小麻煩,就是在執(zhí)行svnupdate的時候,由于使用的是web的用戶,在出現(xiàn)確認證書的提示信息時,用戶是無法輸入的:
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就可以了,測試環(huán)境windows2003,并且試過復(fù)制到AllUsers的對應(yīng)目錄無效。
另外修改配置文件servers,添加ssl-trust-default-ca=yes的方式在windows下好像沒有作用。
ThisentrywaspostedonThursday,January19th,2006at2:10:16andisfiledunderInternet,Subversion.YoucanfollowanyresponsestothisentrythroughtheRSS2.0。本節(jié)SVN更新網(wǎng)站介紹完畢。
【編輯推薦】
- Linux下不常用的SVN 命令大揭秘
- Subversion和TortoiseSVN如何在Windows下進行構(gòu)建SVN版本控制
- 最新MPlayerSVN漢化精簡版上市
- SVN使用教程簡單配置篇詳解
- 在線指導(dǎo):Windows系統(tǒng)服務(wù)自動運行對于SVN如何實現(xiàn)