我在图片中添加了一个图例,使其自我解释。
最初,我项目的trunk中的代码是1.0版本。
我将使用此版本的代码创建4个分支:Vendor-A,Vendor-B,1.1和1.2。红线代表这些并行的开发分支。供应商特定的开发和发布在供应商分支上执行,供应商分支中的代码永远不会与主干合并。向供应商发布版本时,会标记这些版本。
现在,我的问题是:
我将非常感谢您在重组/重新设计流程时提出的建议。
答案 0 :(得分:1)
似乎对我好。我稍微简化了一下 - 如果我认为供应商分支机构定期从主干刷新,那么你不需要从bugfix分支进行显式合并 - 只需将错误修正(例如1.1 bugfix)合并回主干,然后从主干到所有供应商分支进行合并。
从主干到供应商合并时的技巧是保持已经合并的内容的准确跟踪。理想情况下,您将合并所有内容,并按时间顺序按块进行。 (我发现标记提交的票证/功能号很有用,所以我可以从svn log
看到需要在特定时间合并的内容。这可以确保我不会将半功能发送到另一个分支。
当我提交合并时,我将添加合并字符串(例如“(merge -r1234:2345 -r2667:3123 ../../trunk)”以及合并描述。这真的有帮助查看日志(比如在供应商分支上)以发现最早的未合并主干版本。
然而,我也倾向于在不同的分支上保持1.0和1.1。因此,如果1.1分支合并后1.0主干变为1.1,那么在此之前从主干获取分支1.0副本可能是合适的。最初将对trunk(1.1)进行错误修正,然后直接合并到从1.1分支派生的任何供应商。但是,它可能不适用于从1.0派生的供应商干净(或可能不相关)。在这种情况下,首先将它们应用于1.0分支,然后从那里合并到早期版本的所有供应商。当然,您可能会发现仅与1.0相关的错误,并且在1.1中不相关或不存在 - 所以这个单独的分支也会有帮助。
考虑到这种方法,因此最好尽可能地将每个供应商从非常旧的版本升级,以便最大限度地减少需要维护的并发版本数量。无论您是理所当然地,还是作为新许可/合同的一部分,都是您的事业所在。