这是关于分支的理论问题,而不是代码体系结构或层。
我有一个团队项目“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”。
虽然我不想讨论分支项目的参考路径,但也许有人有类似项目分支的经验或可以提供更好的分支策略?