我的 SW 小组正在尝试将我们的源代码控制系统从 Microsoft 不再支持的 Visual Source Safe 更新到 Subversion(因为我们的姊妹站点已经在使用它)。我们有很多共享代码,在 VSS 中可以通过内部链接直接完成。这些将需要移动到共享文件夹中以供多个项目使用。尽管可以使用外部来引入这些,但它们有一定的风险,并且不能自然地集成到 SVN 架构中(尽管我们仍然打算将它们用于第三方代码和其他不会改变的东西)。无论如何,我们提出了一个我在任何地方都没有看到过的解决方案,但我们都认为这是有道理的,所以我想看看其他人的想法以及是否存在陷阱(实际上还没有实际尝试过)。
所以我称之为“共享内部”文件夹,以与外部进行对比。假设我的存储库根目录中有一个名为 Common_Code 的目录,其中包含给定语言(在本例中为 C++)的通用库文件。现在我创建带有主干/分支/标签的 MyProject,并希望将共享文件夹放在我的项目的子目录中。所以我创建了一个从 Common_Code 分支到 MyProject/trunk/Common_Code 的普通颠覆分支。因此,各种团队成员通过分支主干来处理 MyProject。Bob 的分支可能如下所示:MyProject/branches/Bob_Working,子文件夹将分支到 MyProject/branches/Bob_Working/Common_Code。这实际上是共享文件夹分支的一个分支。
鲍勃完成后,他合并回树干。这将继续进行,而不会干扰任何其他可能也从根共享文件夹创建“内部分支”的项目。我们最终发布了我们的产品,但发现我们对 Common_Code 进行了一些通用更改,这将有利于其他项目。因此,经过一些小组审查后,我们同意将我们项目的 Common_Code 版本合并回最初使用的根版本。这将更新共享代码的需要与与公司其他人员共享更改的需要分离。
这似乎是一种简单而灵活的本地共享代码的方式。我看到两个可能的限制。首先,它不能跨存储库工作,在这种情况下需要使用外部。其次,合并后不能删除第一个分支,所以我认为不会使用 -reintegrate 。我仍然不确定是否可以接受正常的合并,或者我们的 Tortoise 客户端是否支持它。