我在发布之前已经通过了TFS游侠指南。
我的项目中有以下要求:
目前,我们在CODE下的TFS中有一个代码库,开发人员代码。 以上是分支到DEV镜像dev环境代码 DEV分支分支到QA分支
如果需要热修复,则直接在QA分支上修复,然后反向合并到下面的分支。
在第一次开发之前这很好,但我认为需要重新构建,以便为将来的版本开发提供更好的可扩展性。
当前问题:
记住以上所有内容,我正在考虑重新设计我们的TS分支策略,如下所示:
按照这种方法:
开发将在Dev分支上进行,例如仅DevRel1分支
如果开发人员需要处理大型功能,那么他就可以使用
分支,如特征1分支,从Dev分支分支。在
完成后他会合并回dev分支。
这变得太复杂了吗?可以简化,这看起来很好,还是需要纠正?
我们目前正在使用TFS 2008.
答案 0 :(得分:3)
我的建议是尽可能保持简单。恕我直言,要避免的主要事项是:
因此,您绝对应该使用分支来支持您的开发需求,但请尽量使您的方案尽可能简单。
我们对您使用类似但更简单的方法。那就是:
我们的其他关键策略是:
使用持续集成,单元测试,回归测试,门控检查和连续QA测试,以使Dev分支尽可能稳定。我们的目标是,任何每日构建“应该”足够好,可以直接运送给客户。实际上偶尔有一段短暂的时间(几天)会失去稳定性,但是大部分时间发生这种情况时,我们仍然可以在几天内进行可释放的构建。
推迟分支,直到绝对需要。在TFS中,您可以从代码库历史记录中的任何位置追溯创建分支。因此,当我们准备启动发布分支时,我们实际上并不创建分支,而只是将当前发布版本发送给QA部门进行测试。如果他们对该构建的质量感到满意,那么它将按原样发送给客户,而不会创建任何分支。只有当 我们需要为该版本修复我们实际创建分支的错误时(从构建原始版本候选者的时间点开始,所以我们知道它从经过良好测试开始代码快照)并产生需要的(小)成本。
作为旁注,我们还尝试了一个Dev分支,带有门禁签到QA分支,门禁签到Release分支,但是效果不佳(主要是我们发现它为所有开发增加了相当大的开销。我们想检查经常和每个签入的两个额外的测试和合并步骤是昂贵的。在最坏的情况下,如果您删除,移动或重命名TFS中的文件它变得非常有趣,甚至简单的合并失败 - 这些是困难和耗时的排序我们认为合并TFS仍然不够轻巧,不够强大,无法支持这种方法,除非你准备投入大量时间来管理分支机构。另一方面,如果开发人员小心他们的签到,那么这种“严谨”的方法远不那么需要。所以我们换回了上面的轻量级方法,这增加了风险,但最大限度地减少了合并的需要 - 对于我们(对于一个规模小,训练有素/能干的团队),这种方法效果更好。
答案 1 :(得分:1)
感谢您的所有回复。因此我简化了我的设计,我们计划在对它进行测试之前稍微调整一下。
新设计如下所示(对它的评论仍然欢迎!)
答案 2 :(得分:0)
我的2美分......
为了正确,我建议让 PossibleFeature1 分支合并回它所源自的同一分支,所以主要。谈论哪些,不区分功能和 PossibleFeature 分支。他们是一样的。功能总是受到延迟,重新优先级排序,无论他们为什么不会在计划发布中结束的原因。原则上允许每个功能分支具有这种灵活性。因此,对待每个功能都是一样的。
为了进一步简化您的模型(以及您的生活),请考虑只有一个主分支用于开发和QA。两者的额外开销和复杂性是不值得的。从主开发线向QA部署稳定的主要版本。标记出货版本。
所以我的(个人)模型将是一个主要的开发分支。极具挑战性的功能被放在他们自己的分支上。他们可能会在发布时结束,他们可能会进入下一个,不用担心。保持定期从主要功能分支到功能分支以保持同步。如果你需要支持一段时间的字段中有多个版本,那么拥有单独的Release分支是很好的。在稳定,alpha和beta阶段之前启动Release分支。您可以考虑将部署到QA作为这些Release分支的一部分。