问题:如果在“开发”项目完成之前创建了“版本 B”,则需要“版本 A”的“修补程序”,我如何将“修补程序”从“版本 A”传播到“版本 B”而不在此期间完成任何“开发”项目?
简短回答:对于所描述的特定场景,我相信您可以安全地从 Release A 合并到 Main,然后备份到 Release B。(是的,这与 Geoffrey McGrath 在 8/16 的评论中所说的相同。)通常你不'在创建分支后不要从 Main 到发布分支进行任何 FI 合并,但如果您可以确认 Main 中存在的唯一更改是您的修补程序,那么合并应该安全地实现您的目标。然而,这是基于一个非常可疑的假设,即自从“发布 B 服务”分支以来,您有一个干净的 Main 分支,没有其他任何东西已合并到 Main 中。在继续之前非常仔细地验证这个假设!
Dirty Main 变通办法 - 挑选或毫无根据的合并:如果 Main 中有其他更改,您可以挑选将特定修补程序从 Main 合并到“Release B Service Pack”。另一种选择是从“Release A Servicing”直接合并到“Release B Servicing”,从而绕过 Main 中的任何其他更改。(您仍然需要通过 main 合并此修复程序,以便开发分支获得此修复程序。)请注意,cherry-pick 合并和无基础合并比常规合并具有更高的风险(这可能足够棘手)。对于不存在更好解决方案的特定场景,它们仍然是有效的选择。
Meta-answer#1:我发现绘制图表可以帮助我跟踪从原始分支到最终目的地的变化。Cherry-pick 没有任何特殊符号,但无根据的合并可以是带虚线的箭头。如果它在纸上有效(并且您考虑了与 Main 的所有其他分支交互),那么它应该可以工作。
Meta-answer#2:如果上面没有完全回答您的问题,那么我建议您阅读http://tfsbranchingguideiii.codeplex.com/discussions论坛并交叉发布此特定请求。Bill Hays 通常在该论坛中非常敏感,您的问题肯定指向 TFS 分支中的修补程序管理。
供参考:
我的团队从事一些 SOA(面向服务的架构)项目,这些项目遇到了与 SaaS 类似的挑战。一个月的质量保证周期是一个棘手的问题。
我非常喜欢 Martin 的文章(足以在下面再次引用它)。还有两篇值得回顾的文章(两篇都有漂亮的图片来补充漂亮的 TFS 分支指南图表)。然而,所有三篇文章都专注于开发分支管理而不是修补程序发布分支管理(与前面答案中的图表相同)。
- 指导:Scrum 团队的分支策略- Martin Hinshelwood 2010.04.14 - Scrum 团队通过 2 个 sprint 工作时基本“发布分支”策略的出色演练(带有很棒的图表)。
- Scrum 分支- Bill Heyes (ALM Ranger) 2011.01.18 - 优秀的 Scrum 团队图和扩展分支。
- 并行功能团队在开发中处理多个版本。每月发布到生产。- Bill Heyes 2011.01.14 - 非常类似于我们的分支场景(3 个 Web 开发团队 + 1 个 Prod 环境)。指导是团队分支 + 发布分支。
享受!-泽潘