TFS中用于在多个团队项目之间共享代码的最佳分支策略是什么?

时间:2015-06-10 16:41:49

标签: tfs tfs2012 branching-and-merging release-management

这是关于分支的理论问题,而不是代码体系结构或层。

我有一个团队项目“SuperLibs”,包含25个.NET项目(类库)。 团队项目的结构是这样的:

  • Main(当前正在开发的稳定版本)
  • Dev(从主要分支 - 正在开发的不稳定代码)
  • 发布\ Release 1.0
  • 发布\ Release 2.0
  • 发布\ etc ......

我还有另一个团队项目“SuperLogic”,它包含一个应用程序逻辑,仅依赖于SuperLibs的5个项目。 团队项目的结构是这样的:

  • Main(当前正在开发的稳定版本)
  • Dev(从主要分支 - 正在开发的不稳定代码)
  • Shared \ SuperLibs \ Release 1.0(从SuperLibs 1.0版开始分发)
  • Shared \ SuperLibs \ Release 2.0(从SuperLibs 2.0版开始分发)
  • 发布\ Release 1.0
  • 发布\ Release 2.0
  • 发布\ etc ......

最后我有第三个团队项目“SuperApp”,它依赖于“SuperLibs”和“SuperLogic”。 团队项目的结构是这样的:

  • Main(当前正在开发的稳定版本)
  • Dev(从主要分支 - 正在开发的不稳定代码)
  • 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分支)
  • 发布\ Release 1.0
  • 发布\ Release 2.0
  • 发布\ etc ......

未使用二进制引用。仅使用项目引用。

现在情况如下:

  • 当我构建“SuperLibs”时 - 一切正常
  • 当我构建“SuperLogic”时 - 一切都还可以,因为SuperLogic在“Shared \ SuperLibs \ Release x.y”文件夹中引用SuperLibs的项目
  • 但是当我尝试构建“SuperApp”时 - 它失败了,因为它能够在“Shared”文件夹中引用SuperLogic和SuperLibs,但“Shared”文件夹中的“SuperLogic”不能引用“SuperLibs”。

虽然我不想讨论分支项目的参考路径,但也许有人有类似项目分支的经验或可以提供更好的分支策略?

1 个答案:

答案 0 :(得分:3)

我只是完全从等式中删除分支。您分别将这三件事分开,这意味着您需要单独对其进行版本控制。如果您单独对它们进行版本控制,请将所有内容转换为NuGet包并通过NuGet引用二进制文件。