在進行大量svn更新和多個工程聯合編譯時,如果是對你來說是一件經常重複做的事情,譬如更新代碼編譯版本;更新代碼,編譯版本並升級之類的重複性很高,枯燥而且容易出錯的事情,使用批處理來統一管理和處理將大大簡化工作流程,使編版本,升級成爲一件快樂的事情,想一下,要升級了,準備工作做好後,運行下批處理,“嘩嘩”就跟你有條不紊的做好了,多麼愜意的一件事情,而且不可能產生人爲原因的錯誤,要統一批處理化,那就自然要熟悉各種工具的命令行了,首先來看看svn的,嘿嘿。
svn的命令行的詳細使用,這篇文章講得比較詳細:http://www.open.collab.net/scdocs/ddUsingSVN_command-line.html.zh-cn,但是一般開發人員用不了這麼多,下面簡單介紹我常用的5-6個:
1、help,查看有你當前的svn版本支持哪些命令,在控制檯下輸入svn help,回車,顯示如下:
- usage: svn <subcommand> [options] [args]
- Subversion command-line client, version 1.6.1.
- Type 'svn help <subcommand>' for help on a specific subcommand.
- Type 'svn --version' to see the program version and RA modules
- or 'svn --version --quiet' to see just the version number.
- Most subcommands take file and/or directory arguments, recursing
- on the directories. If no arguments are supplied to such a
- command, it recurses on the current directory (inclusive) by default.
- Available subcommands:
- add
- blame (praise, annotate, ann)
- cat
- changelist (cl)
- checkout (co)
- cleanup
- commit (ci)
- copy (cp)
- delete (del, remove, rm)
- diff (di)
- export
- help (?, h)
- import
- info
- list (ls)
- lock
- log
- merge
- mergeinfo
- mkdir
- move (mv, rename, ren)
- propdel (pdel, pd)
- propedit (pedit, pe)
- propget (pget, pg)
- proplist (plist, pl)
- propset (pset, ps)
- resolve
- resolved
- revert
- status (stat, st)
- switch (sw)
- unlock
- update (up)
- Subversion is a tool for version control.
- For additional information, see http://subversion.tigris.org/
如果你想查看某個具體命令的使用,直接svn help [command]即可,譬如想看看checkout的用法:svn help checkout,顯示內容比較多,自己去看看吧。
2、update的用法,這個應該是用得最多的一個命令(或者叫操作吧)了,使用很簡單,你要更新哪個目錄,就先進到那個目錄,然後在那個目錄下運行svn update。譬如你要更新目錄:H:/QQDrPrj/APP/LightDog/QQDoctor3.2/Output。
- @echo off
- set svnpath="H:/QQDrPrj/APP/LightDog/QQDoctor3.2/Output"
- h:
- cd %svnpath%
- svn update
- pause
3、checkout的使用方法,checkout就是把代碼或者其他資料從服務器上下載到本地的意思,所以是要指明服務器的地址的,首先你也要進到一個目的文件夾(就是你要把代碼下載到哪兒),然後就可以執行svn checkouthttps://xxxx/out了。下面一段腳本是將typedef文件夾下的所有文件包括typedef文件夾更新到h盤根目錄下。(注意,運行之後,如果是第一次運行很可能向你詢問用戶名和密碼等信息)
- @echo off
- set svnpath="H:"
- h:
- cd %svnpath%
- svn checkout https://xx.x.xx.xx:xxxx/svn/ims/APP/Output/TypeDef
- pause
4、commit提交代碼到服務器上,和update的使用方法類似,但是要記錄一個log信息[加上 -m ""],svn commit -m ""。或者註冊環境變量SVN_EDITOR也可以(譬如註冊一個環境變量名爲SVN_EDITOR,值爲notepad.exe的環境變量),這樣的話直接svn commit也可以,如果你既沒有加-m ""又沒有註冊SVN_EDITOR環境變量,那麼執行此命令時會報如下的錯誤:
- svn: Commit failed (details follow):
- svn: Could not use external editor to fetch log message; consider setting the $S
- VN_EDITOR environment variable or using the --message (-m) or --file (-F) option
- s
- svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and
- no 'editor-cmd' run-time configuration option was found
5、add代碼或者文件到服務器,這個命令其實比較少使用命令行進行,嘿嘿!運行時要確保當前目錄下有你要增加的文件或者文件夾,直接執行 svn add myfile.txt 或者 svn add myforder,例如:下面是將h盤下Documents目錄下的engine文件夾增加到svn中(前提是Documents是一個svn的工作目錄,否則會執行失敗)。
- @echo off
- set svnpath="H:/Documents"
- h:
- cd %svnpath%
- svn add engine
- pause
6、cleanup清理命令,能夠清理某個目錄下的一些執行失敗的事務,和update的用法類似。
7、log查看日誌,可以查看某個目錄或者文件的日誌信息,這個可以在執行一批命令後再檢查下是否執行正確。用法很簡單,類似add命令,下面是查看Documents下面myfile.txt文件的日誌。
- @echo off
- set svnpath="H:/Documents"
- h:
- cd %svnpath%
- svn log "myfile.txt"
- pause
svn的命令就介紹到這裏了,可以和vc的命令汗聯合起來,這樣就可以直接更新編譯了,如下:
- @echo off
- @echo 請使用svn更新文件
- set svnpath="h:/myprj/VulInfoDataBase"
- h:
- cd %svnpath%
- svn update
- explorer.exe "h:/myprj/VulInfoDataBase"
- pause
- @echo 編譯
- msdev "h:/myprj/VulInfoDataBase/VulChk/myprj.dsw" /MAKE "TSVulChk - Win32 Release"
- pause