我很震惊-确实感到震惊-这里的答案很多,说“除非必须,否则不要更新”。我已经做到了,尽管从短期来看它更容易,但是从长远来看,它就像地狱一样燃烧。比起偶尔的大更新,更频繁,更小的更新要容易得多,而且管理起来也容易得多,而且您可以早日受益于新功能,错误修复等。
我不认为库更改比代码更改更难测试。都是一样的-您正在更改代码库,需要在提交之前进行验证,在发布之前进行更深入的验证。但是您必须已经有执行此操作的流程,因为您正在更改代码!
如果您要进行大约两到四周的迭代工作,我建议您将每个迭代任务一次更新一次库,并在开始后尽快进行,这时的工作要比迭代前轻松一些。截止日期,该项目具有吸收变更的更多能力。让某人(或者一对,如果要进行配对编程)坐下来,查看哪些库已更新,然后尝试将每个库引入并进行重建和测试。也许每次迭代都要花半天到一天的时间。如果一切正常,请检查更改(我假设您像我们一样将库保留在源代码控制中;如果不确定,我不确定如何以受控方式传播更改)。如果您拥有自动化测试,那显然比完全手动进行测试要容易得多。
现在,问题是,如果更新破坏了您的工作,您是花时间修复它还是将其遗忘?我建议倾向于后者。如果可以在一小时内将其修复,请执行此操作,但是如果要进行大量更新工作以进行集成,则将其作为其自己的开发任务来进行,并与其他任何方法一样进行评估,确定优先级和计划。机会是,除非它带来一些非常关键的修复或改进,否则优先级将很低,您将永远无法解决。但是,您永远不知道,等到下一个迭代更新日轮到时,问题可能会自行解决。即使没有,至少现在您也知道更新路径上有一个障碍,它不会让您感到意外。
如果您不进行该长度的迭代,那么我会设置某种独立的更新时间表-不超过每月一次。您是否还有其他项目节奏可以配合使用,例如每月状态审查或建筑委员会会议?发薪日?比萨之夜?满月?无论如何,您都需要找到比传统发布周期短得多的东西,因为尝试每6-18个月一次更新所有内容会很痛苦且令人沮丧。
不用说,如果您在发布前进行稳定化分支,则不会将此策略应用于它们。在那里,您只需要更新库即可获取关键修复程序。