【发布时间】:2015-04-22 15:59:56
【问题描述】:
是否有一个很好的工具/工作流程可以让 diff+patch 操作“通勤”,在文本文件之间进行大量剪切和粘贴操作?
我们有三个文件 source.old、source.new 和 destination。我们之前从source.old 复制了几个文本块到destination,但除此之外这些文件有共享历史记录。此后,我们编辑了source.old 以生成source.new,并怀疑复制的帅哥中出现的更改与destination 有关。
我们首先使用copy & paste detecting tool 或通过指定表示destination 上的粘贴操作的特定git 提交来自动识别复制和粘贴。由于复制和粘贴将是经过编辑的副本,这应该使用类似差异的上下文描述复制和粘贴操作 source.old 和 destination,并为每个复制的块提供差异。
接下来我们创建一个补丁文件,表示复制的块中发生的从source.old 到source.new 的更改,但在必要时将source.old 的上下文替换为destination 的上下文,并重新排序块以匹配destination。我们最终以交互方式应用补丁,选择相关更改。
有没有一种简单的方法可以使用类似 diff & patch 的工具来做到这一点?如果我们谈论的是source 和destination 存在于同一个存储库中的剪切和粘贴操作,那么可能必须存在这样的工具,因为可能会将一个文件拆分为多个较短的文件。在这种重组之前,我一直小心翼翼地关闭我的工作分支,但大概 git 可以处理这样的交叉文件更改。当source 和destination 存在于不相关的存储库中时,如何手动执行?
【问题讨论】: