使用具有多个项目的版本控制时处理项目引用

时间:2009-06-16 22:57:26

标签: .net svn version-control

假设我有一个如下所示的存储库布局:

 |Root
   |->CommonLib
   |->ProjectA.PartA
        |->trunk
            |->lib
            |->src
            //etc
   |->ProjectA.PartB
        |->trunk
            |->lib
            |->src
   //About four more projects.

现在我将它们拆分为这样,这样我就可以在每个不同的部分工作并在需要时分支它们。

ProjectA.PartA使用ProjectA.PartB作为参考。

在我构建它之前,我将所有项目中继放在一个src文件夹中,只需将该文件夹拉下来,然后将项目添加到解决方案中,只需在它们之间添加项目引用即可。

虽然它们都在同一个文件夹中,但是我觉得它可能不是很好的做法,并且它会强制您使用相同的文件夹检出结构或依赖关系中断。

我想在哪里构建每个项目并将二进制文件存储在根目录下的CommonLib文件夹中,然后在每个项目上使用svn:externals将其依赖项从CommonLib文件夹下载到其lib文件夹中并添加一个引用它那么项目本身。

上述解决方案是否会比添加项目引用更好?

有内部项目参考时的常见做法是什么?

如果它们都是同一“目标”的一部分,我应该在所有项目文件夹上设置外部以将依赖项作为源下拉出来吗?

感谢。

2 个答案:

答案 0 :(得分:2)

SVN副本很便宜,SVN合并很容易。所以我会坚持使用一个根解决方案并让项目相互引用。如果需要,将整个事情分支,然后重新集成。

答案 1 :(得分:1)

通常我会使用外部而不是库本身从每个解决方案中引用项目。在这种情况下,在每个项目中进行单元测试以进行回归测试非常重要。

存储二进制文件并引用外部文件也很好(也可能更安全)。如果我这样做,我会标记每个版本的依赖二进制文件并引用它。如果我想升级,我会更改外部以使用新标签 - 这样可以更安全地升级库。

编辑: 我刚刚意识到你分成了同一个项目的两个部分 - 我上面的答案是针对多个项目的共享库。我会把它们放在和怀亚特所说的相同的行李箱中