没有项目 Y 的更改,如何发布项目 X(合并到主控)?
展望未来,解决方案 A、B 和 C 是否应该都是单独的存储库(尽管它们在业务级别相关)?
设想
我们有一个单一的存储库,其中包含:
- 解决方案 A
- 解决方案 B
- 解决方案 C(共享组件)
解决方案 A 和 B 都“插入”到我们的整个系统,通过通用组件将它们连接在一起。解决方案 A 和 B 依赖于解决方案 C 中的共享组件。
项目 X 需要对解决方案 A 和 C 进行更改。这些更改在功能分支中完成,合并回 dev 并持续部署到我们的暂存环境中。
项目 Y 只需要对解决方案 B 进行更改。再次在功能分支中,合并回 dev 并持续部署到 Staging。
Git 历史
此时,我们的 Git 历史看起来像这样(从最早到最新):
--> 项目X --> 项目Y
业务需求
企业不再希望项目 X 投入生产,因为项目 Y 现在是“优先级 1”。不能发布来自 Project X 的任何更改。
分支策略
发布策略
我们部署完整的产品包,而不是差异化。
在合并到 Dev 时,Team Foundation Server 会部署到 Staging。
在合并到 Master 时,Team Foundation Server 为每个构建定义提供一个格式化的部署包。