2012-02-13 75 views
17

我的要求很簡單。在每個文件的開頭應該有這樣的塊註釋:在源代碼中包含SVN修訂號

/* 
* This file was last modified by {username} at {date} and has revision number {revisionnumber} 
*/ 

我想填充{username}{date}{revisionnumber}SVN適當的內容。

我如何通過NetBeansSubversion來實現?我搜查了很多,但我找不到我需要的東西。

+0

可能重複[顛覆:修正數據添加到在提交代碼文件(http://stackoverflow.com/questions/2008843/subversion-add-revision-data-to-code-file-on-提交) – geoffspear 2012-02-13 15:23:39

回答

13

我看着this的問題,並得到了一些有用的信息。這不完全重複,因爲我正在與NetBeans合作,但這個想法是相同的。這是我的頭:

/* 
* $LastChangedDate$ 
* $LastChangedRevision$ 
*/ 

然後我去團隊>顛覆> SVN性能,並添加svn:keywords作爲屬性名稱和LastChangedDate LastChangedRevision的屬性值。

;當我從NetBeans提交它看起來是這樣的:

/* 
* $LastChangedDate: 2012-02-13 17:38:57 +0200 (Пн, 13 II 2012) $ 
* $LastChangedRevision: 27 $ 
*/ 

謝謝大家的支持!我會接受我的答案,因爲其他答案不包括NetBeans信息。不過,我給+1其他答案。

+1

這也可以在Eclipse中完成:右鍵單擊項目樹。選擇** Team - > Set Property **,從** Property name **列表中選擇'svn:keywords'並輸入到**輸入一個屬性**文本框:'LastChangedDate LastChangedRevision' – ecle 2012-02-13 15:55:33

+0

嘗試添加svn:keywords ,NB 8中沒有任何反應。 – Yster 2014-09-29 12:48:56

4

你可以用The SubWCRev Program來做到這一點。

SubWCRev是可以用來讀取Subversion工作副本 狀態,並可選在模板文件執行關鍵字替換 Windows控制檯程序。這通常用作 構建過程的一部分,作爲將工作副本信息 併入您正在構建的對象中的一種手段。通常它可能用於 在「關於」框中包含修訂號。

這通常在構建過程中完成。

如果您使用Linux,您可以找到一個Linux二進制here。如果你願意,你也可以使用svn log的輸出來編寫你自己的。

+0

如果使用'Linux'也會怎麼樣? – 2012-02-13 15:24:56

+0

@PetarMinchev查看我更新的答案。 – RedFilter 2012-02-13 15:26:23

10

由於此數據僅存在於之後該文件已提交,應由SVN本身設置,而不是客戶端程序。 (並且客戶端處理往往會被禁用或根本沒有配置。)這意味着沒有簡單的模板/替換就像您想要的那樣,因爲在第一次替換之後,模板變量將會丟失。

您可以在SVN的關鍵詞替換here附近找到信息。然後像$Rev$這樣的東西可以被$Rev: 12 $取代。

0

我推薦一個稍微不同的方法。

將以下標題放在源文件的頂部。

/* 
* This file was last modified by {username} at {date} and has revision number {revisionnumber} 
*/ 

然後添加一個shell腳本,這樣

之後的更新,結賬腳本

USERNAME=# // use svnversion to get username 
DATE=# // use svnversion to get revisio nnumber 
sed -e "s#{username}#${USERNAME}#" -e "s#{date}#${DATE}#" ${SOURCE_CONTROL_FILE} > ${SOURCE_FILE} 

預提交腳本

cat standard_header.txt > ${SOURCE_CONTROL_FILE} 
tail --lines $((${LENGTH}-4)) ${SOURCE_FILE} >> ${SOURCE_CONTROL_FILE} 
4

我跟着斯托Minchev的建議,只是我把$ LastChangedRevision $標記不在註釋塊中,但將其嵌入到字符串中。現在可以通過編程方式在「幫助」 - >「關於」對話框中顯示版本號。

String build = "$LastChangedRevision$"; 

我稍後可以使用將所有絨毛修剪掉的字符串在關於對話框中顯示修訂值。

String version = build.replace("$LastChangedRevision:", "").replace("$", "").trim(); 
+0

我以同樣的方式使用它。 – Semaphor 2016-03-01 09:01:34