2010年6月14日 星期一

如何設定SVN的Externals

trunk: Main line of development(主幹, 主要開發都由在 trunk)
tags: Release (當發展到一個固定的階段, 可以放 Release 版本的東西)
branches: Preparation of release, bug fixing(放一些正在修改的分支, 稍後會合併的工作副本)

今天研究了一下,如何在透過svn去設定Externals Link,
Externals Link的意思主要是在下載目前指定的目錄的時候,同時下載另一個Repositories。
這一個的好處就是,當一套Code是分成許多部分,而每一個部分是由不同的單位來maintain,如果沒有使用Externals Link,那就必需要對Code的每一個部分做Update或CheckOut的動作!
而透過Externals Link,則只需要設定完後,對一整個Code做Update的動作,這個時候,它會同時對所有的Externals Link做Update的動作。

目前在Server端有Main與Secondary這兩個Repositories。
每一個的根目錄裡面都有一個ReadMe.txt


對Main資料夾按右鍵,選擇內容,再選擇Subversion這一個Tab

再選擇Properties選擇New

則會跳出Add Properties視窗~
1. 在Property name的部分設定為svn:externals
2. 設定Property value分為兩個部分,第一個部分設定Externals Link在這個部分就是我的數值是https://LocalHost/svn/Secondary/trunk
因為,在測試的環境中,我的server與client是在同一台電腦中,所以,我的網址設定為LocalHost
接下來是設定放置的Folder這一個部分我的設定是Secondary
所以,最後的結果就是https://LocalHost/svn/Secondary/trunk Secondary

按下OK之後,就會出現如下圖~


這個時候對Main資料夾做Commit的動作,會發現Main的這一個資料夾有被修改過~


Commit完之後,再對Main資料夾做Update的動作,就可以完成時,就可以看到以下畫面,它把Secondary的Repositories下載到Secondary這一個資料夾~


當之後任何人對Secondary Repositories做更新的動作之後,Update Main資料夾,可以同時Update到Main資料夾裡面的Secondary資料夾的內容~

指令的方式可能是透過,因為,我還沒有試過,所以不確定
svn propset svn:externals –F external_def.txt Secondary
聽說還有另一個指令svn:propedit,讓你輸入多行你要Externals的資訊
執行命令後會執行編輯器編輯屬性。
在編輯器打開的文件中,每行代表一個你要從那裡取得Code的不同的外部svn Repositories。
一行中的第一段代表你想讓取回Code存放的目錄,最後一部分是取得Code的svn版本的URL。
中間你還可以用一些可選配置參數來決定要取回的版本。以下是一些例子:
取得Zend Framework倉庫的當前版本(head):
framework http://framework.zend.com/svn/framework/trunk
取得Zend Framework倉庫的版本2616:
framework -r2616 http://framework.zend.com/svn/framework/trunk

參考資料:
TortoiseSVN Help Menu
[程式設計] SVN 如何建立一個 branch
[程式設計] 為你的程式加上版本控制 -- SVN
Version Control with Subversion
學會使用svn:externals

沒有留言: