2009-08-31 44 views
2

某些版本控制產品可以將感興趣的值嵌入到文件中,因爲它是從存儲庫中檢出的。通常你在源文件中放入一些魔術字符串,並在結帳時更新。就像你寫的「$ revision = xxx」一樣,如果你簽出修訂版832,它會變成「$ revision = 832」。 SVN是否有這樣的功能,可能使用屬性?SVN中的動態嵌入字段?

回答

4

你在keyword substitution之後,我想。

+0

啊,有時候會有一個簡單的答案。我搜索了文檔,但我無法想出正確的關鍵字(無雙關語)來搜索。 – Jay 2009-08-31 16:17:49

2

是的,REDBERD書的描述keyword substitution,是權威的,但這裏是快速破敗。

在foo.pl:

# Nifty perl trick to get just number and not "$Revision:" string. 
our $revision = '1.0-' . qw$Revision: 0 $ [1]; 

然後運行:

svn propset 'svn:keywords' 'Revision' foo.pl 

如果你的所有的Perl文件需要擴大$修訂$,看看自動道具。

設置您的〜/ .ssh/config文件:

enable-auto-props = true 
*.pl = svn:eol-style=native;svn:executable;svn:keywords=Id LastChangedBy LastChangedRevision Revision Author 

(在這裏,我也確信Perl腳本是可執行的,和EOL風格是正確的,因此用戶可以在Linux上結帳, Windows或Mac,沒有問題,除了修訂版,我還包括了我最常用的關鍵字。)

這甚至適用於像TortoiseSVN這樣的Windows客戶端(請參閱設置頁面中的按鈕,它將在編輯器中打開配置文件)。

自動道具最大的缺點 - 它們是每個用戶,所以所有提交者必須具有一致的設置。在未來的版本中有一些關於允許per-repo配置的討論。

〜J