用SVN的SubWCRev管理同步項目版本號

使用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%”
local

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版本號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章