这是SVN结构:
/trunk
+ ProjectA
+ ProjectB
+ Common
+ ProjectCore
+ References
ProjectA
和ProjectB
将交付最终产品,并且每个都有自己的发布生命周期。这两个项目都使用ProjectCore
中相同的通用库。ProjectCore
也将具有其自己的发布生命周期。在
ProjectA
和ProjectB
中,我们要引用ProjectCore
的库。成功发布ProjectCore
的生命周期后,将ProjectCore-lib添加到SVN。 ProjectCore库将添加到References
文件夹中。通过这样做,我们释放(冻结)了我们的
ProjectCore
构建,并将其作为经过全面测试的组件。因此,我们有多个Core-lib版本:RLS_Core_1.00
RLS_Core_1.01
RLS_Core_2.00
RLS_Core_3.00
由于我们将发布的库(dll)添加到SVN中,因此
ProjectA
和ProjectB
可以引用它们。最好的方法是什么?
方法1
将
ProjectCore
-libs添加到SVN中名为References
的RLS_Core_X_XX
下的新文件夹中。在
ProjectA
和ProjectB
的解决方案中,我们添加对此唯一文件夹的引用:./trunk/Common/References/RLS_Core_X_XX
。方法2
将
ProjectCore
-libs添加到一个相同文件夹References/Core
下的SVN中。如果其中有一个“旧”版本,将被提交。在
ProjectA
和ProjectB
的解决方案中,我们添加了对./trunk/Common/References/Core
的引用。我们使用SVN外部属性定义ProjectA
和ProjectB
必须使用哪个Core-lib版本。在这两种方法中,开发人员都明确需要确定要在项目中使用的Core-lib版本。除非您由于缺少功能而必须升级,否则规则是保持相同的Core-lib。
方法1:在项目解决方案中进行编辑。方法2:在外部属性中进行编辑。
首选哪种方法?
最佳答案
看起来很自然的第一件事是为每个项目分别使用推荐的文件夹结构(branches
,tags
,trunk
)文件夹。这也适用于普通项目,特别是如果您要使用这两个最终产品引用的版本。由于这些项目将分别开发,因此您应该能够创建单独的标签和分支。
完成此操作后,(并且由于需要将所有引用都包含为内置程序集),最好将发布的程序集分别复制到每个项目Reference
子文件夹中。
这样,无论何时创建分支,您都可以获得所需版本的确切快照,并且与通用的开发无关。
换一种说法:
/RepoRoot
+ ProjectA
+ branches
+ tags
+ v1.0
+ v1.1
+ trunk
+ references (includes 3rd-party and ProjectCore)
+ ProjectB
+ branches
+ tags
+ v0.8
+ v1.2
+ trunk
+ references
+ ProjectCore
+ branches
+ tags
+ v2.0
+ v2.1
+ trunk
+ references