保持*两个SVN存储库的*部分同步

时间:2017-01-20 09:28:49

标签: svn

我有一些项目和他们在SVN存储库中使用的框架;让我们将此存储库称为 A 。现在我想与另一个SVN存储库上的另一个团队共享该框架(让我们称之为 B ),但我希望对提交给B的框架的所有更改都可用于一个也是。

当然,我可以立即检查服务器B上的新内容,更新,将其从服务器A复制到工作副本并提交到那里。但是我也希望保留所有历史记录(不应该是一个问题,因为提交的作者显然只是一个名称字符串),当有人在服务器B上提交时(我在框架中&#) 39; s目录)。

注意:同时,服务器A及其项目及其框架的版本过着自己的生活。总而言之,它有点像分支,但在不同的存储库中,A到B应该像合并,但B到A最好也保留变化的历史。

有可能吗?我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

这里有两个选项:

  1. 根本不要复制/同步A到B的内容。相反,使用svn:externals将A中的相应项目从B中检出工作副本。通过这样做,您不会将A中的代码复制到B中,并且每次从B检出/更新WC时,你将拥有A的“最新”。
  2. 使用svnsync有选择地将存储库A的部分同步到存储库B.来自manual
  3.   

    从Subversion 1.5开始,svnsync还能够镜像存储库的子集而不是整个存储库的子集。设置和维护此类镜像的过程与镜像整个存储库时完全相同,只是在运行svnsync init时指定源存储库的某个子目录的URL,而不是指定源存储库的根URL。现在,与该镜像的同步将仅复制在该源存储库子目录下更改的位。但是,这种支持有一些限制。首先,您无法将源存储库的多个不相交的子目录镜像到单个镜像存储库中 - 您需要反映一些两者共有的父目录。其次,过滤逻辑完全基于路径,因此如果您镜像的子目录在过去的某个时刻被重命名,那么您的镜像将仅包含修订,因为该目录出现在您指定的URL处。同样,如果将来重命名源子目录,则同步进程将在您指定的源URL不再有效时停止镜像数据。