2013-10-17 17 views
0

我正尝试使用diff工具创建修补程序文件,但遇到问题。 我已创建了一个名为目录中,并把原来的文件到它:如何处理此修补程序问题

  • A/original_file.c

我已经创建了一个名为B以外的目录,并把同样的文件与它修改的内容。

  • B/original_file.c

我已经复制从互联网的B/original_file.c文件的内容并把它放入一些文本编辑器。

发出命令diff -Naur a b > patch_file.patch后,我可以看到patch_file.patch已生成,并且它有一些不需要的更改(它与缩进有关)。

例如:

return msg (MSG_NOTIFY, &msg, senr, 
-     sizeof (struct msgotify)); 
+     sizeof (struct msgotify)); 

你可以看到有改变相关的压痕,其中sizeof (struct msgotify))由压痕的相同sizeof (struct msgotify))而是一个基础这是我们不想要的东西所取代。

有谁能让我知道如何摆脱这个问题??

回答

1

如果您不关心间距的变化,请将-b添加到生成修补程序的diff命令中。

+0

Thansk @Jonathan,所以我的命令会diff - 是否-b a b?我的新补丁文件将有b/original_file.c的indendation? –

+0

是的,你可以使用'diff -Naur -b'或者将它与其他标志'diff -Naurb'结合使用。由于修补程序文件不包含任何只有间距不同的行,因此会发生什么情况取决于您如何应用修补程序。由于该补丁将'a'转换为'b',因此如果将补丁应用于'a'中的文件,则会得到包含与'a'相同间距的行的结果,因为您没有支付注意间距的差异。如果你在'b'文件中反向应用了这个补丁,你可以在'a'中得到这个文件,但是文件'b'的间距为那些没有明确改变的行。 –

+0

你建议的选项对我来说工作得很好,我只能看到修改后的补丁文件,但是当应用这个补丁文件时,我得到的错误并不是早些时候出现的。 –