1

我们有一个名为“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' 已经是不同 URL 的工作副本

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

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

此处的目标是将每个站点共有的所有文件维护在一个位置,并将站点特定文件保存在存储库中它们自己的每个目录中,并能够将公共文件和站点特定文件检出到相同的位置工作目录路径。

4

1 回答 1

2

可以得到需要的结果whileif

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

解决方案是基于文件的外部:仔细阅读SVN-Book 中的“外部定义”,从单词开始

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

即,您在+中的文件将被维护,HOST-tree 中的文件 - COMMON 中文件的外部文件(如果所有文件都有唯一的名称)。签出的主机树将在工作副本中包含所有文件(如果在签出时未禁用外部文件)common/nagios/etccommon/nagios/objects

于 2013-06-24T20:56:11.410 回答