源代码控制版本控制和参考

时间:2009-11-26 00:31:49

标签: .net visual-studio

我们目前有一个存储源代码的SVN存储库。我们有大量项目(数百个)和多个公共库等。

一切都运作得很好,但结构上并不标准。最初我们的目标是标准的“Trunk”,“Tags \ Tag_1.0.0”风格模型,但我们遇到的问题是我们项目的相对路径停止工作。

EG:

- Common
|- Trunk
|- Tags
||- Tag_1.0.0
- OtherProject
|- Trunk
|- Tags
||- Tag_1.0.0

在这个结构中(我称之为相当标准,如果我错了,请纠正我)在OtherProject中对来自trunk文件夹的common标签的引用将是“../../Common/Tags/Tag_1.0.0 “这解析为/Common/Tag_1.0.0(实际上会有更多...因为项目在主干中并不平坦,但这会节省一个巨大的图表)。一旦标记了相同的相对路径,就会转到“/OtherProject/Common/Tags/Tag_1.0.0”。

我能想到的解决方法包括绝对路径,但并非所有开发人员都使用相同的文件夹作为我们的文件(甚至是相同的硬盘驱动器号),在标记之前更改引用,但是在标记主干时有一些可怕的事情。不会编译和希望一旦它在标签文件夹中它只是工作,或者将每个项目的引用放在DLL形式的项目本身中,但在Visual Studio中并不容易(对于我们来说,引用trunk到trunk并不是闻所未闻并同时编辑这两个项目 - 当然是后面的标记)它会使我们的SVN存储库膨胀,以包含已发布的每个标记的所有构建。

这导致我们将我们的标签放在与Trunk相同的层次结构级别。

EG:

- Common
|- Trunk
|- Tag_1.0.0
- OtherProject
|- Trunk
|- Tag_1.0.0

我们不能成为唯一有这个问题的人,所以我很想知道是否还有其他人为这场野兽而战,以及他们为解决这个问题做了些什么?我们的方法是错误的还是我们忽略了一个有助于此的工具?

3 个答案:

答案 0 :(得分:1)

我能想到的另一个选择,你可以使用svn:externals features。而不是直接检出所有项目。

例如,您的主项目将是OtherProject,然后您可以将Common项目的依赖关系定义为OtherProject中的svn:external,具有您想要的结构。

有关详细信息,请参阅svn book on externals

答案 1 :(得分:0)

看起来你正在一次检查整棵树?只需查看你需要的标签/中继线,所以它们都处于同一级别,即:

  • Common/Tag_1.0.0签出到名为Common
  • 的本地目录中
  • OtherProject/Trunk
  • 旁边的OtherProject结帐Common

然后OtherProject可以将Common中的文件引用为../Common/<whatever>

答案 2 :(得分:0)

如果您的所有项目都没有自己的发布周期,即始终在同一时间一起发布,那么您可以使用

\trunk
  - Common
  - OtherProject
\tags
  \ Tag_1.0.0
       - Common
       - OtherProject
相关问题