簡體   English   中英

修訂版本更改后,SVN版本號將轉換為特定文件

[英]SVN version number into specific files after any revision change

在我們的項目中,我們請求將SVN根修訂版本號(而不是最后修改的版本)放入我們的lib頭文件,並在庫中提供一個函數,該函數將提供最后一次提交的修訂版本號。

我已經找到了這個問題,所以我知道了$Id$$Revision$ 我不知道是否有可能在每次提交后強制SVN(無需其他腳本)更新某些特定文件(標頭和.cpp )。

例如:我修改了一個.cpp文件並提交了它,但是在提交之后,不僅修改的.cpp文件將被更新,而且lib頭文件和一個小的.cpp文件也將帶有提交的修訂號。

該請求的目的是使我們的庫用戶即使在將文件復制到無法訪問SVN的地方時也可以檢查代碼的修訂號。

更新:編譯將在SVN不可用的環境中完成。

  1. 請使用標准術語和定義以獲得明確的答案-“ SVN根修訂版號”是正常SVN世界中未知的東西。 是“存儲庫的全局修訂ID”嗎?
  2. SVN關鍵字是特定於文件的,並且與全局修訂號不相關
  3. 您不能提交具有更改的強制不變的文件,但是可以在提交相關文件后在提交后的掛鈎中提交這些需要的文件(有一些技巧)(但請記住,這些.cpp.h $ Revision $ 至少是實際版本的修訂版+1- 可以大於+1, 如果提交后掛鈎在執行期間不會阻止提交的話)
  4. 您可以在代碼和源代碼中獲得和使用Repo-Revision,而無需svn:關鍵字和|或鈎子以及其他提交:這是在構建過程中進行一次額外操作並在存儲庫中對.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM