TFS 中在多个团队项目之间共享代码的最佳分支策略是什么?
What is the best branching strategy in TFS to share code between multiple team projects?
这是一个关于分支的理论问题,与代码架构或层无关。
我有一个包含 25 个 .NET 项目(class 库)的团队项目 "SuperLibs"。
Team Project的结构是这样的:
- 主要(当前稳定版正在开发中)
- Dev(从 Main 分支 - 正在开发的不稳定代码)
- Releases\Release1.0
- Releases\Release 2.0
- Releases\etc...
我还有另一个团队项目"SuperLogic",其中包含一个应用程序逻辑,仅依赖于 SuperLibs 的 5 个项目。
Team Project的结构是这样的:
- 主要(当前稳定版正在开发中)
- Dev(从 Main 分支 - 正在开发的不稳定代码)
- Shared\SuperLibs\Release 1.0(从 SuperLibs 1.0 版分支)
- Shared\SuperLibs\Release 2.0(从 SuperLibs 2.0 版分支)
- Releases\Release1.0
- Releases\Release 2.0
- Releases\etc...
最后我有了第三个团队项目 "SuperApp",它同时依赖于 "SuperLibs" 和 "SuperLogic"。
Team Project的结构是这样的:
- 主要(当前稳定版正在开发中)
- 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 版分支)
- Releases\Release1.0
- Releases\Release 2.0
- Releases\etc...
没有使用二进制引用。仅使用项目引用。
现在情况是这样的:
- 当我构建 "SuperLibs" - 一切正常
- 当我构建 "SuperLogic" 时 - 一切正常,因为 SuperLogic 正在引用文件夹 "Shared\SuperLibs\Release x.y"
中的 SuperLibs 项目
- 但是当我尝试构建 "SuperApp" - 它失败了,因为它能够在 "Shared" 文件夹中引用 SuperLogic 和 SuperLibs,但在 "Shared" 文件夹中引用 "SuperLogic"无法引用 "SuperLibs".
虽然我不想玩分支项目的参考路径,也许有人有类似项目分支的经验或者可以提供更好的分支策略?
我只想完全从等式中删除分支。您正在分别对这三件事进行分支,这意味着您正在分别对它们进行版本控制。如果您单独对它们进行版本控制,请将所有内容转换为 NuGet 包并通过 NuGet 引用二进制文件。
这是一个关于分支的理论问题,与代码架构或层无关。
我有一个包含 25 个 .NET 项目(class 库)的团队项目 "SuperLibs"。 Team Project的结构是这样的:
- 主要(当前稳定版正在开发中)
- Dev(从 Main 分支 - 正在开发的不稳定代码)
- Releases\Release1.0
- Releases\Release 2.0
- Releases\etc...
我还有另一个团队项目"SuperLogic",其中包含一个应用程序逻辑,仅依赖于 SuperLibs 的 5 个项目。 Team Project的结构是这样的:
- 主要(当前稳定版正在开发中)
- Dev(从 Main 分支 - 正在开发的不稳定代码)
- Shared\SuperLibs\Release 1.0(从 SuperLibs 1.0 版分支)
- Shared\SuperLibs\Release 2.0(从 SuperLibs 2.0 版分支)
- Releases\Release1.0
- Releases\Release 2.0
- Releases\etc...
最后我有了第三个团队项目 "SuperApp",它同时依赖于 "SuperLibs" 和 "SuperLogic"。 Team Project的结构是这样的:
- 主要(当前稳定版正在开发中)
- 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 版分支)
- Releases\Release1.0
- Releases\Release 2.0
- Releases\etc...
没有使用二进制引用。仅使用项目引用。
现在情况是这样的:
- 当我构建 "SuperLibs" - 一切正常
- 当我构建 "SuperLogic" 时 - 一切正常,因为 SuperLogic 正在引用文件夹 "Shared\SuperLibs\Release x.y" 中的 SuperLibs 项目
- 但是当我尝试构建 "SuperApp" - 它失败了,因为它能够在 "Shared" 文件夹中引用 SuperLogic 和 SuperLibs,但在 "Shared" 文件夹中引用 "SuperLogic"无法引用 "SuperLibs".
虽然我不想玩分支项目的参考路径,也许有人有类似项目分支的经验或者可以提供更好的分支策略?
我只想完全从等式中删除分支。您正在分别对这三件事进行分支,这意味着您正在分别对它们进行版本控制。如果您单独对它们进行版本控制,请将所有内容转换为 NuGet 包并通过 NuGet 引用二进制文件。