如果我們的軟件能夠自動引入SVN修訂號(倉庫版本號),那么我們開發軟件的時候就能快速定位bug出自哪個SVN版本。那么如何讓軟件直接自動生成並引用SVN版本號呢?
我們可以使用SVN info命令,在當前倉庫查看SVN Revision,並通過抓取Revision關鍵字,之后生成一個文件,讓我們的軟件自動引用。
如果是在dos下輸入SVN info命令,一般會提示“svn不是內部或外部命令”。因為windows下安裝SVN,默認不安裝svn commond line。請現重裝SVN選擇安裝svn commond line,並且添加bin目錄到windows環境變量。
之后就可以在dos下使用SVN info 命令了。此時我們可以直接bat腳本中完成一系列工作:
@echo off
set src_dir=%~dp0
for /f "delims=" %%i in ('svn info ^| findstr "Revision"') do set rev=%%i
set rev=%rev:~10%
echo #define SVN_REVISION %rev% > "%src_dir%"svnversion.h
運行這個腳本會在腳本所在目錄生成一個svn revision版本號的頭文件svnversion.h,我們軟件中引用這個頭文件就可以得到svn修訂版本了。
如果是keil編譯軟件,可以在project->option for target->User中,設置編譯軟件之前執行這個腳本。同時,軟件記得引用svnversion.h。
還有一個方法,可以利用svn鈎子來自動更新這個頭文件。在SVN設置界面找到Hook scripts頁。分別添加一個Post-commit Hook和Post-update Hook並指定運行這個腳本,即可在每次提交或更新代碼后自動更新svnversion.h。