新聞中心
本節(jié)簡(jiǎn)單向大家描述一下SVN自動(dòng)同步方面的內(nèi)容,因?yàn)樗俏覀冊(cè)趯W(xué)習(xí)SVN過(guò)程中難免會(huì)遇到的問(wèn)題,所以和大家一起來(lái)學(xué)習(xí)一下,希望通過(guò)本文大家能夠?qū)VN自動(dòng)同步問(wèn)題有新的看法。
SVN自動(dòng)同步需求分析:
1、用戶(hù)提交文件時(shí)將其同步到Web服務(wù)器對(duì)應(yīng)目錄
2、用戶(hù)提交文件時(shí)將其同步到另一個(gè)SVN版本庫(kù)
3、日志記錄整個(gè)操作過(guò)程

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的??h網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
SVN自動(dòng)同步程序執(zhí)行流程:
1、用戶(hù)提交文件到SVN服務(wù)器,提交操作成功后觸發(fā)post-commit腳本
2、在post-commit版本文件中使用phpphp_script.php執(zhí)行PHP腳本
3、在PHP腳本中通過(guò)exec系統(tǒng)調(diào)用更新服務(wù)器上的版本庫(kù)工作副本
4、根據(jù)更新操作結(jié)果日志,對(duì)另一個(gè)SVN版本庫(kù)進(jìn)行對(duì)應(yīng)的操作處理
日志文件說(shuō)明:
svn-post-commit-log.txt意外操作錯(cuò)誤日志
svn_log_master_2010-03-01.txt2010-3-1主SVN操作日志
svn_log_slave_2010-03-01.txt2010-3-1副SVN操作日志
程序源碼說(shuō)明:
post-commit:svnhookscript
#!/bin/sh
#設(shè)置語(yǔ)言為UTF8字符集exportLANG=en_US.UTF-8
#執(zhí)行SVN同步操作的腳本,并把意外錯(cuò)誤信息保存到日志文件
php/var/www/svn/svn004/hooks/post-commit-sync.php>>/var/www/log/svn-post-commit-log.txt2>&1
post-commit-sync.php:PHP自動(dòng)同步腳本
#!/usr/bin/php
/**
*SVN自動(dòng)同步
*自動(dòng)根據(jù)用戶(hù)的提交操作,同步文件到Web服務(wù)器及另一個(gè)SVN版本庫(kù)
*/
$svnhost='http://192.168.1.40/svn004';//子SVN版本庫(kù)地址
$svnout='/var/www/html/svnout';//子版本庫(kù)檢出目錄
$svnlog='/var/www/log';//操作日志文件目錄
$svnmast='/var/www/html/svnmast';//主版本庫(kù)檢出目錄
/**
*保存操作日志到文件中
*@paramstring$logname日志名稱(chēng)
*@paramstring$content日志內(nèi)容
*@returnbooleam操作狀態(tài)
*/
functionsave_log_to_file($type,$content){
global$svnlog;
if(empty($type)||empty($content)){
returnfalse;
}
//生成日志文件名稱(chēng)
$str_log_file=$svnlog.'/svn_log_'.$type.'_'.date('Y-m-d',time()).'.txt';
//組合日志內(nèi)容
$content=is_array($content)?implode("\n",$content):(string)$content;
$content='svnbotoperatordate:'.date('Y-m-dH:i:s',time())."\n".$content."\n\n";
returnfile_put_contents($str_log_file,$content,FILE_APPEND);
}下面看一下SVN自動(dòng)同步過(guò)程中組合日志內(nèi)容時(shí)可能出現(xiàn)的一些問(wèn)題。
//如果SVN輸出文件夾不存在就創(chuàng)建一個(gè),登陸失敗就退出
if(!is_dir($svnout)){
if(!@mkdir($svnout)){
save_log_to_file('slave','error:createslavesvnoutputdirectoryfaile!');
exit();}
}
//如果文件夾中沒(méi)有文件則執(zhí)行一次checkout操作
$filelist=scandir($svnout);
if(count($filelist)<=2){
exec('svncheckout'.$svnhost.''.$svnout);
}
//如果 checkout失敗則退出程序
if(!is_dir($svnout.'/.svn')){
save_log_to_file('slave','error:slavesvnisnotavaildateworkcopy!');
exit();
}
//用于保存系統(tǒng)調(diào)用的操作結(jié)果。本節(jié)關(guān)于SVN自動(dòng)同步問(wèn)題介紹完畢,請(qǐng)關(guān)注本節(jié)其他相關(guān)報(bào)道。
【編輯推薦】
- SVN同步測(cè)試服務(wù)器創(chuàng)建方法大揭秘
- 兩種方法實(shí)現(xiàn)SVN搭建測(cè)試服務(wù)器
- SVN同步相關(guān)問(wèn)題專(zhuān)家講解
- 深入剖析 如何遠(yuǎn)程修改SVN密碼
- 術(shù)語(yǔ)匯編 SVN代碼庫(kù)簡(jiǎn)介
分享文章:SVN自動(dòng)同步如何實(shí)現(xiàn)?
URL網(wǎng)址:http://fisionsoft.com.cn/article/djcihsh.html


咨詢(xún)
建站咨詢(xún)
