【问题标题】:What do you do if a feature is dropped at the last moment? [closed]如果某个功能在最后一刻被删除,你会怎么做? [关闭]
【发布时间】:2010-02-11 05:29:46
【问题描述】:

假设您从事一个大型项目,每个版本都针对多个功能。对于每个功能开发,我们可能有不同的功能分支(在 VCS 中)。但是在合并所有功能分支并完成集成之后,说删除了其中一个功能(这在我们的组织中发生的频率比您想象的要高)。此时有没有办法回滚功能?我们通常所做的就是弄清楚所有代码更改并手动回滚。您是否有任何有助于减少这项工作的流程/最佳实践?作为记录,我们有一个带有 subversion 作为 VCS 的 java 项目。

【问题讨论】:

  • 一次合并一个功能不是一个选项。

标签: version-control project-management process release-management


【解决方案1】:

这取决于您放弃该功能的原因。

如果“在最后一刻”是在系统测试期间,并且您不想重复它,那么我会说您只是禁用该功能并交付它。

我们过去曾这样做过;删除该功能可能会产生额外的错误,风险太大。如果您不再需要该功能(例如,该需求已消失,或者已确定实现不正确),那么就风险而言,最好以最少的代码更改将其关闭。

我的意思是,删除或隐藏启用该功能的 UI 元素,然后用户不会知道它的存在(假设它默认关闭)。

希望在未来的版本中,将有机会重构该部分代码并删除该功能或重新引入该功能。

【讨论】:

  • 几乎正确(但仍然 +1)。禁用,RE-TEST,然后发货。禁用该功能所需的最小更改。在基于 GUI 的系统中,这可能就像禁用或删除菜单项一样简单。在其他系统中,您需要找出最小的变化...
  • 好的,在禁用该功能后,您仍然需要做一些进一步的系统测试,主要是检查禁用该功能引入的回归(例如,您是否不小心禁用了其他一些功能)并确保该功能确实被禁用了。
【解决方案2】:

如果您使用 TortoiseSVN 作为客户端,它在上下文菜单中有一个“回滚此版本的更改”。

只需在工作副本上显示日志,然后选择您希望反向合并的修订(在这种情况下,表示您在功能分支中合并的修订)。

alt text http://img64.imageshack.us/img64/9053/svnreversemerge.png

否则,您可以从命令行执行反向合并。反向合并会创建一个新修订版,即 HEAD 修订版减去您反向合并的修订版的更改,因此您始终可以“反向反向”合并。 SVN 在这方面很棒。

【讨论】:

  • 这样做的问题是,在您集成该功能后,您将因 QA / UAT 进行更改,因此会出现非常混乱的回滚。如果可能的话,禁用该功能会更安全,特别是如果您不确定该功能是否会在以后恢复(老实说 - 如果您的客户将编码时间提交给某个功能,然后在这么晚了,他们可能会在下周再次改变主意)。
猜你喜欢
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 2018-07-17
  • 2013-08-30
  • 2022-01-15
相关资源
最近更新 更多