svn:keywords
Subversion 具有取代關鍵詞(有關納入版本控制檔案的有用信息)進入檔案內容的功能.
舉個例子, 假設你有個文件, 想要在里面顯示近一次修改的日期. 你可以把這個負擔加諸文件的作者身上, 讓他們每一次送交更動之前, 順便添加近一次修改日期的部份. 但是遲早有人會忘記這件事. 換個方式, 只要叫 Subversion 對 LastChangedDate 關鍵詞進行關鍵詞取代即可.
Subversion 定義了可用來進行取代的關鍵詞列表. 這個列表包含了以下五個關鍵詞:
LastChangedDate
LastChangedRevision
LastChangedBy
HeadURL
Id
如果只把關鍵詞定位錨加進檔案里的話, 什幺事也不會發(fā)生.要告訴 Subversion 是否該對某一個檔案進行關鍵詞取代,得使用svn:keywords這個性質。當它被設定時, 它會控制該檔案哪個關鍵詞應該被取代.
舉個例子, 假設你有一個納入版本控制的檔案, 名為 weather.txt, 看起來像這樣:
Here is the latest report from the front lines.
$LastChangedDate$
$Rev$
Cumulus clouds are appearing more frequently as summer approaches.
如果沒有設定該檔案的 svn:keywords 性質, Subversion 什幺事也不會作. 讓我們開啟關鍵詞 LastChangedDate 的內容取代.
$ svn propset svn:keywords "LastChangedDate Author" weather.txt
property `svn:keywords' set on 'weather.txt'
$
在你送交了這個性質更動之后, Subversion 會顯示為:
Here is the latest report from the front lines.
$LastChangedDate: 2002-07-22 21:42:37 -0700 (Mon, 22 Jul 2002) $
$Rev$
Cumulus clouds are appearing more frequently as summer approaches.
這樣不管誰提交這個文件,都會在里面顯示近一次修改的日期。
svn:eol-style
除非另外指定版本控制檔案的 svn:mime-type 性質, Subversion 會假設檔案包含人類可讀的資料.這對于列尾符號 (EOL) 是很不幸地, 因為不同的操作系統(tǒng)會使用不同的符號來表示一列的結尾. 舉個例子, 一般用在 Windows 平臺上的列尾符號是兩個 ASCII 控制字符 :返回字符 (CR) 與換行字符 (LF). 但是 Unix 軟件只使用 LF 字符來表示一列的結尾.這樣以來window客戶提交的檔案中的CR 字符在 linux客戶端會顯示成 ^M, 而linux客戶提交的檔案中CR 字符在 Windows 客戶端會被忽略。結果將檔案里的所有文字列合并成一個超長的文字列, 這是因為沒有返回CRLF字符組合的存在來表示一個換行。 解決的方法是 svn:eol-style 性質. 當這個性質設定為native時, Subversion 會根據(jù)系統(tǒng)的類型來決定是否對該檔案的結尾進行自動處理。.
svn:externals
有的時候, 一個工作復本可能包含了數(shù)個不同來源的工作復本. 舉個例子, 你可能想要有數(shù)個不同的目錄, 各來自不同的檔案庫.我們可以通過svn:externals 性質來宣告這一對對應關系。內容是子目錄對應至 Subversion 檔案庫 URL 的多行表格.
$ svn propget svn:externals calc
third-party/sounds http://sounds.red-bean.com/repos
third-party/skins http://skins.red-bean.com/repositories/skinproj
third-party/skins/toolkit http://svn.red-bean.com/repos/skin-maker
當有人取出 calc 目錄的工作復本, Subversion 還會繼續(xù)取出在外部定義里的項目.
$ svn checkout http://svn.example.com/repos/calc
A calc
A calc/Makefile
A calc/integer.c
A calc/button.c
Checked out revision 148.
Fetching external item into calc/third-party/sounds
A calc/third-party/sounds/ding.ogg
A calc/third-party/sounds/dong.ogg
A calc/third-party/sounds/clang.ogg
Checked out revision 14.
Fetching external item into calc/third-party/skins
…
小結
Subversion有一份很好的文?——《Version Control with Subversion》(http://svnbook.red-bean.com/)。它提供了有關Subversion的各方面內容,如使用、管理和開發(fā)等。
經過數(shù)年的開發(fā),以替代CVS為目標的Subversion,相信以其強大的功能,對CVS良好的繼承性,一定會有很好的發(fā)展。
作者簡介
姓名:雷凱
工作單位:升技主板(蘇州)研發(fā)中心
聯(lián)系地址:蘇州市新區(qū)馬運路羅禮科技有限公司研發(fā)中心 郵編 215000
E-mail: tigerleihm@yahoo.com.cn>
參考資料:Version Control with Subversion (http://svnbook.red-bean.com/)
“本文作者是雷凱 升技主板(蘇州)研發(fā)中心工程師。他目前在中國蘇州 升技主板(蘇州)研發(fā)中心工作?梢酝ㄟ^tigerleihm@yahoo.com.cn 與他聯(lián)系。”