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