很多人都把SVN服務器搭建在正式服務器上,commit后,需要在測試服務器先測試一下,這時候,就需要在測試環境進行update操作。
問題是,commit后,測試環境如何實現自動更新呢?
研究了一天,終於有了結果,對bat和vbs一竅不通,就是有點麻煩。
OK,我們先寫一個批處理文件svnUpdate.bat來進行svn update操作:
::SVN自動update ::待更新SVN目錄 SET WORKING_COPY=D:/wwwroot svn update %WORKING_COPY% ::pause
文件很簡單,就兩條命令。
WORKING_COPY是你測試環境的網站目錄,這里是D:/wwwroot,請自行修改,當然你必須在該目錄下checkout先。
如果用戶名或密碼更改了,你應該手動進行一次驗證,並保存驗證結果。
svn update命令自行查看資料 =。 =
下一個問題是怎么調用這個bat文件呢?如果正式和測試環境,都在同一只機器上,那么直接編寫HOOK,調用這個文件就可以。
但如何不是同一個機器呢?一個比較簡單的辦法,就是在測試環境上,每經過一個時間間隔進行更新操作,我們可以編寫一個vbs腳本,每隔15秒調用一次svnUpdate.bat。
采用vbs調用有一個好處,可以隱藏彈出的cmd.exe窗口。
我們新建一個文件,callSvnUpdate.vbs,內容如下:
'指定時間間隔調用.bat文件 '停止腳本請在任務管理器結束wscript.exe
Set ws=wscript.createobject("wscript.shell") dim bat '需運行的文件 bat="cmd.exe /c svnUpdate.bat" do '0表示不顯示窗口,1顯示,調試用 ws.run bat,0 '每15秒運行一次 wscript.sleep 15000 loop
將兩個文件放於同一目錄中,運行callSvnUpdate.vbs,一切盡在不言中。