posts - 311, comments - 0, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

外部定义
有时候创建一个由多个不同检出得到的工作拷贝是非常有用的,举个例子,你或许希望不同的子目录来自不同的版本库位置,或者是不同的 版本库。你可以手工设置这样一个工作拷贝—使用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