自動化工作之自動更新SVN


任務計划程序

任務計划程序是Window自帶的組件

image

微軟文檔

http://windows.microsoft.com/zh-cn/windows-vista/automate-tasks-with-task-scheduler-from-windows-vista-inside-out

打開方法

方法一:開始菜單\ 控制面板 \管理工具 \任務計划程序

方法二:開始菜單\ 所有程序 \ 附件 \ 系統工具 \ 任務計划程序

image

在這兒可以創建任務,讓它按我們的計划去做我們想做的事。

自動更新SVN

TortoiseSVN文檔:https://tortoisesvn.net/docs/release/TortoiseSVN_zh_CN/index.html

使用TortoiseSVN的TortoiseProc.exe進行更新SVN,

參考資料:http://tortoisesvn.net/docs/release/TortoiseSVN_zh_CN/tsvn-automation.html

tortoisesvn提供的api

XXXX\TortoiseProc.exe /command:update /path:"c:\svn_wc\" /closeonend:0

實現代碼

更新svn.bat

1、創建一個bat文件,命名為:更新SVN.bat 。內容如下:

@echo off
@echo ================自動更新SVN Start===============
rem SVN安裝目錄
SET svn_home=D:\Program Files\TortoiseSVN\bin
rem SVN項目目錄
SET svn_work=D:\Code\Unity3D\SVN\cosmosbox\cosmosbox
rem SVN日志目錄
remSET setup_path=D:\
@echo 正在更新目錄 %svn_work%
 
Echo 正在殺死進程...
rem excel和word如果打開狀態,會導致不能正常更新,所以要把進程結束,我機器安裝的是WPS
taskkill /f /im et.exe 
taskkill /f /im wps.exe
Echo 殺死進程完畢
 
 
rem 檢查日志文件
rem if exist "%setup_path%"\autoUpdate.log (echo update: %date% %time%  >> "%setup_path%"\autoUpdate.log) else echo create: %date% %time% >"%setup_path%"\autoUpdate.log
 
rem 執行SVN更新命令,更新對話框不自動關閉
"%svn_home%"\TortoiseProc.exe/command:update /path:"%svn_work%" /notempfile /closeonend:0
echo ==============自動更新SVN Finish==============
pause

創建計划任務.bat

2、再創建一個bat文件,命名為:創建計划任務.bat。內容如下

@echo 添加計划任務
rem 把"更新SVN.bat"和此bat放在同一目錄,雙擊即可創建計划任務,每天7:00自動執行此bat
SCHTASKS /Create /SC DAILY /ST 07:00:00 /TN "自動更新SVN" /TR  "%~sdp0更新SVN.bat" /F
pause

運行方法

3、把1,2中創建的bat放在同一目錄下,修改成自己的SVN和TortoiseSVN的安裝目錄。

雙擊 創建計划任務.bat ,在任務計划程序中查看任務是否創建成功

可能遇到的問題

4、雙擊 更新SVN.bat 查看是否能正常更新SVN,如果出現 Two top-level reports with no target   或 SVN跳過 錯誤不能更新SVN。

請檢查bat文件中空格是否正確,把bat放置在SVN目錄外,再重試。

 

同時更新多個SVN庫

如果有多個SVN庫,需要同時更新的話,

方法一:同時打開多個svn窗口進行更新

image

批處理腳本

@echo off
Echo 正在殺死進程...
rem 把WPS相關的進程 Kill避免更新過程中lock
taskkill /f /im et.exe
taskkill /f /im wps.exe
taskkill /F /IM "TortoiseProc.exe"
Echo 殺死進程完畢

rem cosmosbox ,strikehero_art,cosmosbox , trunk 是四個不同的svn庫
start TortoiseProc.exe /command:update /path:cosmosbox
start TortoiseProc.exe /command:update /path:strikehero_art
start TortoiseProc.exe /command:update /path:cosmosbox-op
start TortoiseProc.exe /command:update /path:trunk


rem參考 http://chevy.iteye.com/blog/1271797 
rem http://www.cnblogs.com/luomingui/archive/2012/09/09/2678045.html

方法二:在同一個SVN窗口更新多個不同的SVN庫

image

批處理腳本

@echo off
@echo ================自動更新SVN Start===============
rem SVN安裝目錄
SET svn_home=C:\Program Files\TortoiseSVN\bin
rem SVN項目目錄
SET svn_work_code=X:\xxgame\xx_code_vn
SET svn_work_gameres=X:\xxgame\xx_scheme_vn
SET svn_work_product=X:\xxgame\xx_product_vn

@echo 正在更新目錄 %svn_work_code%,%svn_work_gameres%,%svn_work_product%

rem excel和word如果打開狀態,會導致不能正常更新,所以要把進程結束(區分wps或office進程)
rem taskkill /f /im et.exe 
rem taskkill /f /im wps.exe
rem Echo 殺死進程完畢

rem 執行SVN更新命令,更新對話框不自動關閉
"%svn_home%"\TortoiseProc.exe/command:update /path:"%svn_work_code%*%svn_work_gameres%*%svn_work_product%" /notempfile /closeonend:0

echo ==============自動更新SVN Finish==============


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM