如何撤消/重做代码的选择性部分?

How to undo / redo selective parts of code?

我正在使用 Eclipse。

当我们开发这样的代码时(假设它是按顺序开发的,从上到下)经常发生:

Part 1 (*)
Part 2
Part 3
Part 4 (*)
Part 5

但我们刚刚发现第 1 部分和第 4 部分(标有 (*))是错误的,其他的都很好。问题是我们如何才能在不撤消其余部分的情况下仅撤消这两个部分(1 和 4)?

如果我们可以有选择地撤消,那就太好了。请注意,简单地将代码恢复到版本 1 会丢失第 2、3 和 5 部分,这些部分是正确的,应该保留在代码中。另请注意,通常这些部分混合在一个或两个代码块中(而不是在单独的块中)。

示例:

Part 1: Add method f1(x, y) and move some code from main() to f1() --> incorrect (should be reverted)    
Part 2: Add method f2(a, b, c, d) --> correct (should remain)    
Part 3: Change another part of main() implementation --> correct (should remain)       
Part 4: Change f2 signature to f2(s, n) --> incorrect (should be reverted)       
Part 5: Change body of f2 --> correct (should remain)

我目前使用的方法是:

  1. 在某处保存最新版本的副本(例如,在临时 文本文件),然后撤消到第 1 部分之前,并添加那些正确的部分 从临时文本文件到源代码。
  2. 手动比较不同版本,解决冲突

有没有人想出更简单、更自动的方法来选择撤消和保留哪些更改?

Eclipse 会保留几天的更改历史记录(在 'General > Workspace > Local History' 的首选项中配置)。您可以右键单击文件并 select 'Compare With > Local History' 来查看文件的两个版本之间的差异。您可以将更改从旧版本复制到当前版本。

从长远来看,您应该使用版本控制系统,例如 SVN 或 GIT。这些有 Eclipse 插件,可以让您执行类似的 'Compare With' 操作 - 但涵盖文件的整个历史记录(前提是您定期提交更改)。

我刚找到这篇论文:

Supporting Selective Undo in a Code Editor 将在 ICSE 2015 会议上发表。

作者以图形方式显示更改历史,因此您可以选择撤消(以及保留)哪些更改。

A​​zurite(可以从 here 下载和安装)是他们实现的 Eclipse 插件的名称,该插件支持选择性撤消和许多其他对开发人员有用的简单功能。