外部定義
有時候創建一個由多個不同檢出得到的工作拷貝是非常有用的,舉個例子,你或許希望不同的子目錄來自不同的版本庫位置,或者是不同的 版本庫。你可以手工設置這樣一個工作拷貝—使用svn checkout來創建這種你需要的嵌套的工作拷貝結構。但是如果這個結構對所有的用戶是很重要的,每個用戶需要執行同樣的檢出操作。
很幸運,Subversion提供了外部定義的支持,一個外部定義是一個本地路經到URL的影射—也有可能一個特定的修訂版本—一些版 本化的資源。在Subversion你可以使用svn:externals屬性來定義外部定義,你可以用svn propset或svn propedit(見“為什么需要屬性?”一節)創建和修改這個屬性。它可以設置到任何版本化的路經,它的值是一個多行的子目錄和完全有效的 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 -r21 http://svn.red-bean.com/repos/skin-maker
svn:externals的方便之處是這個屬性設置到版本化的路徑后,任何人可以從那個目錄取出一個工作拷貝,同樣得到外部定義的好處。換句話 說,一旦一個人努力來定義這些嵌套的工作拷貝檢出,其他任何人不需要再麻煩了—Subversion會在原先的工作拷貝檢出之后,也會檢出外部工作拷貝。
案例:

Client屬性設置:
Cache https://cx-0715-1592/svn/WS/trunk/RunPath/Client/Cache
CommonData https://cx-0715-1592/svn/WS/trunk/RunPath/Client/CommonData
Data https://cx-0715-1592/svn/WS/trunk/RunPath/Client/Data
Dream https://cx-0715-1592/svn/WS/trunk/RunPath/Client/Dream
Interface https://cx-0715-1592/svn/WS/trunk/RunPath/Client/Interface
Logs https://cx-0715-1592/svn/WS/trunk/RunPath/Client/Logs
Media https://cx-0715-1592/svn/WS/trunk/RunPath/Client/Media
OgreHead https://cx-0715-1592/svn/WS/trunk/RunPath/Client/OgreHead
Patch https://cx-0715-1592/svn/WS/trunk/RunPath/Client/Patch
Screenshots https://cx-0715-1592/svn/WS/trunk/RunPath/Client/Screenshots
Bin屬性設置(因為bin目錄中有些目錄和文件不想要):
cg.dll https://cx-0715-1592/svn/WS/trunk/RunPath/Client/Bin/cg.dll
USkin.dll https://cx-0715-1592/svn/WS/trunk/RunPath/Client/Bin/USkin.dll
mfc90.dll https://cx-0715-1592/svn/WS/trunk/RunPath/Client/Bin/mfc90.dll
fmodex.dll https://cx-0715-1592/svn/WS/trunk/RunPath/Client/Bin/fmodex.dll
lua5.1.dll https://cx-0715-1592/svn/WS/trunk/RunPath/Client/Bin/lua5.1.dll