SVN:从多个URL签出到同一路径下的当前工作目录?

时间:2013-06-24 17:24:14

标签: svn

我们有一个名为“nagios”的存储库,其下面有以下路径:

common/nagios/etc
common/nagios/objects

FTW/nagios/etc
FTW/nagios/etc/objects

DAL/nagios/etc
DAL/nagios/etc/objects

正如您所见,“common”,“DAL”和“FTW”下面的目录结构是同一性的。

我希望能够首先检出(不导出)“公共”路径,例如(cd / usr / local):

svn co http://foobar/repo/nagios/common/nagios nagios

然后,根据我所在的客户端站点(服务器),检查该站点的特定文件,例如:

svn co http://foobar/repo/nagios/FTW/nagios nagios

这给了我错误: svn:'nagios'已经是其他网址的工作副本

注意:“commmon”和“FTW”(或“DAL”)之间没有相同/重叠的文件

我试过这几种方法,包括使用“svn:externals”(这让我很接近,但在现有的目录结构下创建一个新的目录结构 - ../ nagios / nagios / etc / ...)。

这里的对象是在一个位置维护每个站点共有的所有文件,并在repo中维护每个站点中的站点特定文件,并能够检查常用文件和站点特定文件。到相同的工作目录路径。

1 个答案:

答案 0 :(得分:2)

可以获得所需结果

  • COMMON和HOST文件存储在同一个存储库中
  • 您使用的是SVN 1.6或更高版本(我建议您开始使用1.8)

解决方案是基于文件的外部:从单词

开始,仔细阅读"Externals Definitions" in SVN-Book
  

Subversion 1.6还引入了对文件外部定义的支持。文件外部组件的配置与目录的外部组件类似,并在工作副本中显示为版本化文件。

common/nagios/etc + common/nagios/objects中的文件将是维护文件,HOST树中的文件 - 外部文件到COMMON中的文件(如果所有文件都有唯一的名称)。 Checkout HOST-tree将包含工作副本中的所有文件(如果在结帐时未禁用外部)