[英]SVN version number into specific files after any revision change
在我們的項目中,我們請求將SVN根修訂版本號(而不是最后修改的版本)放入我們的lib頭文件,並在庫中提供一個函數,該函數將提供最后一次提交的修訂版本號。
我已經找到了這個問題,所以我知道了$Id$
或$Revision$
。 我不知道是否有可能在每次提交后強制SVN(無需其他腳本)更新某些特定文件(標頭和.cpp )。
例如:我修改了一個.cpp文件並提交了它,但是在提交之后,不僅修改的.cpp文件將被更新,而且lib頭文件和一個小的.cpp文件也將帶有提交的修訂號。
該請求的目的是使我們的庫用戶即使在將文件復制到無法訪問SVN的地方時也可以檢查代碼的修訂號。
更新:編譯將在SVN不可用的環境中完成。
.cpp
和.h
$ Revision $ 至少是實際版本的修訂版+1- 可以大於+1, 如果提交后掛鈎在執行期間不會阻止提交的話) .cpp
和.h
進行一些更改的代價。 閱讀有關SubWCRev的信息 ,它是TortoiseSVN的一部分(也存在與Linux等效的附加值: SvnRev ),並在“ 關鍵字用法”示例中查看“注意”中的建議。 SvnRev工作流程略有不同-它不處理模板,但生成標頭,必須將其包含在適當的位置 在我們的C / C ++項目中,我們混合了兩種不同的方法:
1 / Make將subwcrev與輸入文件一起使用:version_info.src產生一個包含文件version_info.inc-這在我們的代碼中已包括在內。
static cstring_t LastCommitDate = "@(#)SVN Info: Highest Commit Date $WCDATE=%H:%M %a %d-%b-%Y$";
static cstring_t InfoGenerated = "@(#)SVN Info: Generated $WCNOW=%H:%M %a %d-%b-%Y$";
static cstring_t VersionRange = "@(#)SVN Info: Built From Revision $WCRANGE$";
static cstring_t MixStatus = "@(#)SVN Info: $WCMIXED?Mixed:Single$ Revision";
static cstring_t ModStatus = "@(#)SVN Info: $WCMODS?Has:No$ Local Modifications";
#define CURRENT_REV_NUMBER $WCMIXED?0xffff:((uint16_t)$WCRANGE$)$
$WCMIXED?#define _MIXED_REV_BUILD_:$
$WCMODS?#define _BUILD_INCLUDES_MODIFICATIONS_:$
#ifdef _DEBUG_
#else
$WCMODS?#error *** SVN - Local Modifications Are NOT Permitted Within A Release Build! ***:/* SVN - OK for Release No Local Modifications */$
$WCMIXED?#error *** SVN - Mixed Revisions Are NOT Permitted Within A Release Build! Please Run a svn update!***:/* SVN - OK for Release Single Revision */$
#endif
這包括為我們提供的版本信息,不會讓我們使用經過修改的代碼進行發行。
2 /在我們的某些項目中,我們將python與構建腳本中的svn綁定結合使用,以將所需的版本信息生成到包含文件中。 此功能更強大,因為它可以檢查構建使用的但尚未添加到存儲庫的文件的存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.