【发布时间】:2015-08-26 01:30:02
【问题描述】:
这是一个关于分支的理论问题,而不是关于代码架构或层的问题。
我有一个包含 25 个 .NET 项目(它们是类库)的团队项目“SuperLibs”。 团队项目的结构是这样的:
- 主要(当前稳定版本正在开发中)
- Dev(从 Main 分支 - 开发中的不稳定代码)
- 发布\发布 1.0
- 发布\发布 2.0
- 发布\等...
我还有另一个团队项目“SuperLogic”,它包含一个应用程序逻辑,仅依赖于 SuperLibs 中的 5 个项目。 团队项目的结构是这样的:
- 主要(当前稳定版本正在开发中)
- Dev(从 Main 分支 - 开发中的不稳定代码)
- Shared\SuperLibs\Release 1.0(从 SuperLibs 1.0 版分支出来)
- Shared\SuperLibs\Release 2.0(从 SuperLibs 2.0 版分支)
- 发布\发布 1.0
- 发布\发布 2.0
- 发布\等...
最后我有了第三个团队项目“SuperApp”,它同时依赖于“SuperLibs”和“SuperLogic”。 团队项目的结构是这样的:
- 主要(当前稳定版本正在开发中)
- Dev(从 Main 分支 - 开发中的不稳定代码)
- Shared\SuperLibs\Release 1.0(从 SuperLibs 1.0 版分支出来)
- Shared\SuperLibs\Release 2.0(从 SuperLibs 2.0 版分支)
- Shared\SuperLogic\Release 1.0(从 SuperLogic 1.0 版分支)
- Shared\SuperLogic\Release 2.0(从 SuperLogic 2.0 版分支)
- 发布\发布 1.0
- 发布\发布 2.0
- 发布\等...
没有使用二进制引用。仅使用项目引用。
现在情况如下:
- 当我构建“SuperLibs”时 - 一切正常
- 当我构建“SuperLogic”时 - 一切正常,因为 SuperLogic 正在“Shared\SuperLibs\Release x.y”文件夹中引用 SuperLibs 的项目
- 但是当我尝试构建“SuperApp”时 - 它失败了,因为它能够引用“Shared”文件夹中的 SuperLogic 和 SuperLibs,但“Shared”文件夹中的“SuperLogic”不能引用“SuperLibs”。
虽然我不想玩分支项目的引用路径,但也许有人有类似项目分支的经验或可以提供更好的分支策略?
【问题讨论】:
-
我使用 Team Foundation Server 2012。
-
为什么他们是独立的团队项目?您是否需要为每个人提供不同的安全性?不同的流程模板?非常不同的发布节奏?如果您只是在同一个团队项目中拥有三个不同的树,那将会容易得多。然后,您可以将库项目作为项目引用添加到需要它们的解决方案中。
-
原因很多。基本上我会选择一个团队项目,但因为我不能 - 我必须用几个团队项目来解决它:)
-
这看起来像一个巨大的反模式并且完全过度设计。应通过 nuget 构建和引用依赖项。即使你能想出一个分支策略来支持你正在尝试做的事情,维护起来也将是一场噩梦。
-
NuGet 是一种工具(顺便说一下,它在许多情况下都会失败,需要手动维护)。我们不想依赖工具。到目前为止,我们能够做到。不管怎样:你知道什么好的模式吗?
标签: tfs branching-and-merging release-management