说我有以下“原始”文件:
$ cat test-orig.h
int varA;
int varB;
int varC;
int varD;
int varE;
...并说我已将这些更改放入“新”文件中:
$ cat test-newmodified.h
int varA;
int varB;
int varC;
// a couple of lines
// of useless comments
int var_extra1;
int var_extra2;
int varD;
int varE;
那么两者之间的差异将是:
$ diff -Naur test-orig.h test-newmodified.h | tee test.patch
--- test-orig.h 2013-07-18 19:21:25.741027138 +0200
+++ test-newmodified.h 2013-07-18 19:21:19.916998200 +0200
@@ -1,5 +1,9 @@
int varA;
int varB;
int varC;
+// a couple of lines
+// of useless comments
+int var_extra1;
+int var_extra2;
int varD;
int varE;
假设然后,我获得了一个补丁文件(带有许多块),并且我想删除“无用注释行”。 从diff生成的补丁文件中删除整个块通常很容易-但如果我只想删除一些行,则必须修改diff计数器( @@ -1,5 +1,9 @@上方)太。 说,如果文件中的注释行被删除,则差异将为:
$ diff -Naur test-orig.h test-newmodified-nc.h
--- test-orig.h 2013-07-18 19:21:25.741027138 +0200
+++ test-newmodified-nc.h 2013-07-18 19:26:30.898540270 +0200
@@ -1,5 +1,7 @@
int varA;
int varB;
int varC;
+int var_extra1;
+int var_extra2;
int varD;
int varE;
...也就是说,与意见的计数器, @@ -1,5 +1,9 @@ -现在成了,没有注释, @@ -1,5 +1,7 @@ 。
如果我只是从补丁test.patch删除注释行(并将该编辑另存为test-edit.patch ),并且不更新计数器,那么我得到:
$ patch -p0
patching file test-orig.h
patch: **** malformed patch at line 10:
...并且没有应用这样的补丁。 如果我只是将test-edit.patch的+1,9更改为+1.7 ,那么它将完全适用:
$ patch -p0
patching file test-orig.h
...和test-orig.h已按预期更改(没有注释行)。
因此,给定一个补丁文件,其中包含与该文件有关的所有大块-是否有一个(diff) diff (至少是统一的diff)的(GUI)(文本)编辑器,例如:当大块中的行(或整个行)块)将被删除,它将自动更新差异计数器-这样编辑后的补丁文件仍将干净地应用于原始文件吗?