1. 程式人生 > >用TortoiseSVN的SubWCRev.exe管理同步專案版本號

用TortoiseSVN的SubWCRev.exe管理同步專案版本號

原文出處:“ps:轉載註明出處是一種美德 http://blog.sina.com.cn/s/blog_75c9af020102vgh2.html” 尊重原創。

以下為原創作者的全文內容:

使用svn進行專案程式碼管理過程中,都有這麼個問題,釋出版本的時候,幾下了svn的版本號,然後出現bug後,根據記錄去查詢對應的svn版本的程式碼進行定位和解決bug,但是大部分時候我們希望,在日誌裡面,或者在軟體中編譯進去svn號,這樣就可以快速的定位到是哪個svn的版本出現問題,下面通過在vs2008中實現

1.首先新建一個模板,比如叫version_template.h,內容如下: #ifndef _TMPVERSION_H_ #define _TMPVERSION_H_ #define VER_MAJOR 1 #define VER_MINOR 0 #define VER_REVISION $WCREV$ //注意這個,檢視svn幫助文件可以看到會進行svn號的替換
#endif //!_TMPVERSION_H_ 2.新建一個批處理檔案(windows)或者shell指令碼檔案(linux),此處以windows做示例,svnupdate.bat,內容如下: setlocal ::設定svn客戶端安裝目錄 set SVN_PATH=C:\Program Files\TortoiseSVN\bin  ::設定工作目錄,即工程目錄 set WORK_DIR=F:\SvnCode\DemoClient ::設定版本模版檔案,對應第一步中新建的模板檔案 set VERSION_TEMPLATE=F:\SvnCode\DemoClient\version_template.h
::設定版本號生成檔案,生成的檔案就是我們需要使用的版本檔案 set VERSION_RELEASE=F:\SvnCode\DemoClient\version.h ::進入svn客戶端安裝目錄 cd %SVN_PATH% ::執行更新版本號操作 SubWCRev.exe "%WORK_DIR%" "%VERSION_TEMPLATE%" "%VERSION_RELEASE%" endlocal 3.以管理員許可權執行批處理檔案,可以看到version.h檔案在VERSION_RELEASE中生成了,裡面內容與新建的模板檔案基本一樣,除了#define VER_REVISION 
$WCREV$ version.h內容: #ifndef _TMPVERSION_H_ #define _TMPVERSION_H_ #define VER_MAJOR 1 #define VER_MINOR 0 #define VER_REVISION 1617 #endif //!_TMPVERSION_H_ 4.我們將新生成的version.h檔案加入VS工程,然後在程式碼裡面我們就可以組成一個版本號如: 1.0.1617,通過這個版本號,就可以快速的定位到是什麼svn號的程式碼出現的bug,然後通過svn的log就能檢視是否已經解決 5.當然,可能你會說,每次都要手動去執行這個批處理檔案來更新version.h檔案還是比較麻煩,那麼,你可以再工程屬性中配置預生成事件,設定命令列中內容為:svupdate.bat,那麼每次你執行生成編譯的時候都可以自動幫你更新,然後再編譯進軟體中,若使用的linux環境,這可以在makefie中加入shell指令碼的執行,也是可以自動生成檔案,並編譯進去軟體中,同時,如果是對後臺進行開發的可能只有日誌輸出,那麼你可以在每個日誌的開頭都先寫入我們得到的版本號來進行快速定位日誌檔案對應的svn版本號