我有一个产品(比如版本1),并且有一些自定义更改(比如版本1.x)。我在这些版本上运行差异并创建补丁文件。
现在有一个更高版本的产品(比如版本2)。我希望将从版本1和版本1.x创建的补丁应用到版本2。 这里的困难是线号不会保持不变。 我知道可能会有一些失败的帅哥,但至少如果我可以在版本2上应用补丁(通过忽略行号但通过引用下面和上面的行),它将节省我很多手动工作。
最好的方法是什么?有什么建议? 还有什么有用的工具可以帮助吗?
谢谢! 拉夫
答案 0 :(得分:3)
补丁通常会这样做。你会看到它说像
Hunk #1 succeeded at 6 (offset 5 lines).
当它应用与原始版本不同的行号时的补丁。
如果某些相邻行已更改,但仍有足够的上下文来确定应用修补程序的位置,则会显示with fuzz N
,其中N是不匹配的上下文行数。
答案 1 :(得分:1)
我在使用统一差异时遇到了同样的问题。如下所示,它使用了context
差异:
创建补丁:
diff -c original.file modified.file > my.patch
应用补丁:
patch -p0 --fuzz 500 --ignore-whitespace < my.patch
此后,我们需要检查不匹配:
在原始文件和修改后的文件之间的目标文件夹上生成差异
diff -c destination.file.orig destination.file > second.patch
将源文件夹中的补丁与目标文件夹中的补丁进行比较。通常,我在Linux + Mac上使用midnight commander的compare files命令,在Windows上使用WinMerge。