$ vim patch
Index: toPatch
===================================================================
--- toPatch
+++ toPatch
@@ -2,4 +2,4 @@
*/
-final public class XMLWriter {
+public class XMLWriter {
$ vim toPatch
*/
final public class XMLWriter {
public static float CURRENT_VERSION=2.2f;
$ patch -p0 -ui patch
patching file toPatch
Hunk #1 succeeded at 1 with fuzz 2 (offset -1 lines).
为什么模糊和线偏移?这是一个试图理解差异和补丁的演示案例,因为工具有时/通常看起来不像预期的那样工作。
答案 0 :(得分:15)
Patch会对diff和你的文件的一致性做一些基本的检查,如果这些检查失败,你会得到偏移或模糊。
你有偏移-1,因为补丁期望你的文件的diff匹配行2-4的内容。但是,在您的文件中,它们是1--3行。
你有fuzz> 0,因为上下文的第一行(两个空格和一个*/
)与实际文件中的行不匹配(一个空格和一个*/
)。因此,补丁执行了第二次传递,忽略了上下文的第一行和最后一行。
这并不能解释为什么你看到fuzz = 2而不是1.也许错误复制粘贴文件?任何其他想法,任何人?
答案 1 :(得分:4)
patch
文件中的索引(@@
之间的数字)是错误的。
patch
文件中有3行代码,而3应用补丁后,patch
文件中的代码行。*/
没有问题。
patch
文件中有2个空格,但这是预期的,因为第一列用于生成-
+
或
个字符。
你收到的模糊是关于使用的偏移量(将所有线向上移动1)所以你的patch
文件应该是
$ cat patch
--- toPatch
+++ toPatch
@@ -1,3 +1,3 @@
*/
-final public class XMLWriter {
+public class XMLWriter {
public static float CURRENT_VERSION=2.2f;
并使用给定的toPatch
文件
$ cat toPatch
*/
final public class XMLWriter {
public static float CURRENT_VERSION=2.2f;
然后补丁将在没有模糊警告的情况下应用......
$ patch -p0 -ui patch
patching file toPatch