【问题标题】:What is the best branching strategy in TFS to share code between multiple team projects?TFS 中在多个团队项目之间共享代码的最佳分支策略是什么?
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 是的,您不应该共享多个解决方案使用的代码。这是一种导致代码质量差的大规模反模式。
猜你喜欢
  • 2014-05-31
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多