假设您正在处理每个版本中具有多个功能的大型项目。对于每个功能开发,我们可能具有不同的功能分支(在VCS中)。但是,在完成所有功能分支并完成集成之后,请说删除了其中一个功能(这种情况在我们的组织中比您想象的更频繁)。有没有办法在此时回滚功能?我们通常做的是找出所有代码更改并手动回滚。您是否有任何有助于减少这种努力的流程/最佳实践?为了记录,我们有一个java项目,其中subversion作为VCS。
答案 0 :(得分:5)
这取决于您放弃该功能的原因。
如果“在最后一刻”是在系统测试期间,并且您不想重复它,那么我会说您只是禁用该功能并将其发送。
我们过去曾这样做过;在创建其他错误方面,删除该功能可能风险太大。如果你不再需要这个功能(例如,需求已经消失,或者实现已经被认为是不正确的),那么在风险方面可能只需要用最少的代码更改来关闭它。
我的意思是,删除或隐藏启用该功能的UI元素,然后用户就不会知道它(如果它默认关闭)。
希望在将来的版本中,将有机会重构代码的这一部分,并删除该功能或正确地重新引入它。
答案 1 :(得分:1)
如果您使用TortoiseSVN作为客户端,它会在上下文菜单中右键显示“从此版本回滚更改”。
只需显示工作副本上的日志,然后选择要反向合并的修订版本(在这种情况下,代表您在功能分支中合并的位置的修订版本)。
alt text http://img64.imageshack.us/img64/9053/svnreversemerge.png
否则,您可以从命令行执行反向合并。反向合并创建一个新的修订版本,即HEAD版本减去您反向合并的修订版本的更改,因此您始终可以“反向反向”合并。 SVN很棒。