我们的软件产品能够根据客户的需求和更一般的路线图发展。
因为我们处于SCRUM项目环境中,所以非常重要的是一个新功能进入产品,然后我们面临以下选择:
不发布新功能不是一个选项,客户不希望等待长期里程碑计划来获得他们想要的功能,并且在客户端模块中移动功能并不总是不可思议 - 有时我们需要改变产品的核心......
鉴于这些限制,有没有人对良好做法有任何反馈?
答案 0 :(得分:7)
我建议在我当前的环境中使用以下内容:像安全修复一样对待计划外功能。
这样,每个计划外功能都会获得一个分支,但只有足够长的时间才能生成新版本并合并到trunk中。你几乎把所有的工作都放在一个地方 - 主干 - 而且没有很多合并的工作要做。
答案 1 :(得分:1)
像('new_feature_branch')这样的新分支是为了实现与当前分支不兼容的development effort(如'release_branch')
因此,如果您当前的release_branch不是非常活跃,您可以将它用于新功能(前提是您在开发此新功能之前定义标签,以防您需要取消该过程并继续回到之前这个新功能的状态)
如果在发布分支上定期(每3周)合并一个新分支,那么建立一个新的分支可能是一个很好的解决方案,然后被遗漏。如果你在release_branch上有一些活动(比如一些热修复bug),特别推荐使用它。那么这两项努力需要分开。
基本上,这一切都取决于您的merge workflow定义。
如果您希望我详细说明您认为我没有深入解决的一些选项,请留下评论。
答案 2 :(得分:1)
在我的办公室,我们通常在任何给定的时间点从3个分支机构工作。
在我们需要在第四行开发的极少数情况下(由于非常紧张的发布时间表),我们偶尔会打开我们的沙箱代码行。虽然更典型的是我们将只有一个开发人员单独工作,而不是在主线被清除之前检查。
通过上面的分支策略,我们已经能够在每个sprint结束时通过交付进行主要功能更改。
答案 3 :(得分:1)
听起来你并没有真正生活在Scrum环境中。 Scrum 要求团队在每个Sprint结束时完成,这应该不会持续超过四周(更可能是一到两周)。因此,无论如何,每隔几周,您就应该拥有一个经过全面测试,正在运行,可部署的系统。
我知道这样做的唯一方法是拥有全面的,完全自动化的客户和开发人员测试套件(如极限编程规定)。
我不确定为什么在这种情况下你需要分支机构,但我也不明白为什么它不可维护。根据我的经验,分支越短越好。