使用SVN的hook將更新內(nèi)容同步到測(cè)試環(huán)境_第1頁(yè)
使用SVN的hook將更新內(nèi)容同步到測(cè)試環(huán)境_第2頁(yè)
使用SVN的hook將更新內(nèi)容同步到測(cè)試環(huán)境_第3頁(yè)
使用SVN的hook將更新內(nèi)容同步到測(cè)試環(huán)境_第4頁(yè)
使用SVN的hook將更新內(nèi)容同步到測(cè)試環(huán)境_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、使用 SVN 的 hook 將更新內(nèi)容同步到測(cè)試環(huán)境我們?cè)陂_(kāi)發(fā)的過(guò)程將代碼提交到 SVN 后使用 SVN 的 hook ,通過(guò) post-commit 腳本,在目標(biāo)文件夾根下執(zhí)行 svn update 操作,將更新內(nèi)容同步到測(cè)試環(huán)境,這樣開(kāi)發(fā)調(diào)試非 常方便?,F(xiàn)在 SVN 庫(kù)的文件數(shù)量越來(lái)越多, svn 本地的目錄已經(jīng) 3 個(gè)多 G 了,幾十萬(wàn)個(gè)文件,在目標(biāo)文件夾下執(zhí)行 svn update 進(jìn)行更新速度也就越來(lái)越慢了,常常提交之后 SVN 客戶(hù)端 會(huì)等幾分鐘沒(méi)有響應(yīng),在沒(méi)有響應(yīng)的時(shí)間內(nèi),無(wú)法再繼續(xù)提 交內(nèi)容。如果使用 zendstudio 進(jìn)行提交的話,所有保存的操 作都要等這個(gè) SVN 提交

2、完成才能繼續(xù)。原 post-commit 內(nèi)容:#!/bin/shREPOS=” $TREV= ” $2WEB=/data/webFRAMEWORK=/data/framework export LC_ALL=zh_CN.UTF-8a=svn update $WEB $FRAMEWORK /data/conf/data/shell壬壬壬壬壬壬壬I 壬壬壬壬壬壬壬 IC . -username x*i-password * | gr epn ginc onfif -n $a thenkill -HUP cat /dev/shm/nginx.pidfichown -R www.www $WEB &

3、我們主要做了以下幾個(gè)工作:1、SVN 更新后,同步在 /data/web、/data/framework 、/data/conf 、 /data/shell 4 個(gè)文件夾在下執(zhí)行 svn update 命令進(jìn)行同步更新 操作。nginx 。www 。文件數(shù)2、如果 /data/conf/nginx.conf 文件修改了,那么重啟3、將所有 /data/web 目錄下的文件所有者和組都變成 原因在于:1、提交的 SVN 的時(shí)候, 4 個(gè)文件在根下進(jìn)行更新, 量巨大響應(yīng)非常慢。2、chown 的操作也是比較浪費(fèi)。 解決的想法:對(duì)有變化的文件進(jìn)行 svn update 這樣更有效率。 解決的思路:1

4、、得到本次提交更新的文件。2、在目標(biāo)目錄中更新指定的文件3、同時(shí)將指定文件所有者和組變成www 。4、使用PHP程序當(dāng)shell來(lái)完成這樣的工作。 最后的成果是巨大的,現(xiàn)在 svn 提交已經(jīng)是飛一樣的快了, 要知道 svn 本地的目錄已經(jīng) 3個(gè)多 G 了,幾十萬(wàn)個(gè)文件。 實(shí)現(xiàn)步驟:1、得到更新的文件。通過(guò)分析我們發(fā)現(xiàn) post-commit 腳本有兩個(gè)變量# 庫(kù)的路徑REPOS= ” $1# 新提交的版本號(hào)REV= ” $2通過(guò)這樣的操作就可以得到本次更新的內(nèi)容與文件。changed=$(svnlook changed -r $REV $REPOS)2、將得到的本次更新的內(nèi)容提交給PHP腳本來(lái)

5、處理,分析哪些文件發(fā)生變化/usr/local/php/bin/php-cgi -q/data/shell/svn_post_commit_resources.php“ $changed ” &用 PHP 分析出哪些文件發(fā)生變化后, 構(gòu)造 shell 命令,由 PHP 調(diào)用 shell 命令進(jìn)行更新。3、相關(guān)腳本:最新的 post-commit 文件內(nèi)容:#!/bin/sh# 庫(kù)的路徑REPOS=” $T# 新提交的版本號(hào)REV= ” $2WEB=/data/webFRAMEWORK=/data/framework export LC_ALL=zh_CN.UTF-8changed=$(svnl

6、ook changed -r $REV $REPOS)log=$(svnlook log -r $REV $REPOS)n=$n$changed ” &/usr/local/php/bin/php-cgi -q/data/shell/svn_post_commit_resources.php處理更新內(nèi)容,執(zhí)行更新命令的 PHP 腳本文件 svn_post_commit_resources.php 的內(nèi)容:$files = explode(n, $argv1);if (!is_array($files) $files=(array)$files; foreach ($files as $v)/ 取文件名$f_tem = trim(substr($v, 2);/ 取最頂層目錄名$d_tem = substr($f_tem, 0, strpos($f_tem, /);if (!in_array($d_tem, array(web, framework, conf, shell) continue;/ SVN copy 對(duì)應(yīng)的文件$f_name = /data/ . $f_tem;$cmd = svn update $f_name -username x*i -password K*$;chown www.www $f_n

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論