忽略行号的linux修补程序

忽略行号的linux修补程序,linux,patch,Linux,Patch,我有一个产品(比如说版本1),并且对它进行了一些定制更改(比如版本1.x)。我正在这些版本上运行一个diff并创建一个补丁文件 现在有了该产品的更高版本(比如版本2)。我希望将从版本1和版本1.x创建的修补程序应用到版本2。 这里的困难在于行号不会保持不变。 我知道可能也有一些失败的大块头,但如果我可以在版本2上应用补丁(忽略行号,但参考上面和下面的行),至少可以节省我大量的手动工作 最好的办法是什么?有什么建议吗? 还有什么有用的工具可以在这里提供帮助吗 谢谢! Gaurav补丁通常会这样做。

我有一个产品(比如说版本1),并且对它进行了一些定制更改(比如版本1.x)。我正在这些版本上运行一个diff并创建一个补丁文件

现在有了该产品的更高版本(比如版本2)。我希望将从版本1和版本1.x创建的修补程序应用到版本2。 这里的困难在于行号不会保持不变。 我知道可能也有一些失败的大块头,但如果我可以在版本2上应用补丁(忽略行号,但参考上面和下面的行),至少可以节省我大量的手动工作

最好的办法是什么?有什么建议吗? 还有什么有用的工具可以在这里提供帮助吗

谢谢!
Gaurav

补丁通常会这样做。你会看到它说

Hunk #1 succeeded at 6 (offset 5 lines).
当它在与原始线号不同的线号处应用修补程序时


如果某些相邻行已更改,但仍有足够的上下文来确定在何处应用修补程序,它将使用fuzz N表示
,其中N是不匹配的上下文行数。

我在使用统一diff时遇到了相同的问题。它使用
context
diff工作,如下所示:

创建修补程序:

diff -C 5 original.file modified.file > my.patch
patch -p0 -c --fuzz=4 --ignore-whitespace < my.patch
应用修补程序:

diff -C 5 original.file modified.file > my.patch
patch -p0 -c --fuzz=4 --ignore-whitespace < my.patch
  • 将源文件夹中的修补程序与目标文件夹中的修补程序进行比较。我通常在Linux+Mac上使用midnight commander的比较文件命令,在Windows上使用WinMerge命令