一。diff命令制作补丁。列举其中最常见的3个选项 -r -u -N
diff --hlep: Usage: diff [OPTION]... FILES Compare files line by line. ... FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'.
-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified context.(该选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。) -r --recursive Recursively compare any subdirectories found.(是一个递归选项,遍历所有文件) -N --new-file Treat absent files as empty.(该选项确保补丁文件将正确地处理已经创建或删除文件的情况) |
二。patch命令对文件进行打补丁。
-p0 选项要从当前目录查找目的文件(夹) -p1 选项要忽略掉第一层目录,从当前目录开始查找。 |
三。实例操作:
1.制作补丁文件
(1)mkdir mxh,cd mxh
(2)vi test1.c
1 #include <stdio.h> 2 3 int main() 4 { 5 printf("Hello,world!\n"); 6 return 0; 7 }
|
vi test2.c
1 #include <s3c2440.h> 2 3 #define GPGCON *(unsigned int *)0x50000060
|
(3)拷贝mxh目录下的这两个文件到mxh_modify目录。cd ../ && cp -fr mxh mxh_modify,接下来将在mxh_modify目录下面修改这两个文件,然后制作补丁文件。
(4)cd mxh_modify && vi test1.c,随意修改(仅作测试用)
1 #include <stdio.h> 2 //======================================================= 3 fhdskfhdsjkfhdsfh 4 int main() 5 { 6 printf("Hello,world!\n"); 7 return 0; 8 } 9 vhsdgfidyreiwhfsdkfhsdk
|
(5)vi test2.c,随意修改(仅作测试用)
1 #include <s3c2440.h> 2 3 #define GPGCON *(unsigned int *)0x50000060 4 5 djsljfdkslhfsdhriueyrew
|
(6)OK,已经修改过test1.c和test2.c这两个文件了,接下来制作补丁文件。
cd ..
diff -ruN mxh mxh_modify >mxh.patch |
2.补丁文件详解:
1 diff -ruN mxh/test1.c mxh_modify/test1.c 2 --- mxh/test1.c 2010-10-27 18:57:12.814912961 -0700 3 +++ mxh_modify/test1.c 2010-10-27 19:08:20.064178467 -0700 4 @@ -1,7 +1,9 @@ 5 #include <stdio.h> 6 - 7 +//======================================================= 8 +fhdskfhdsjkfhdsfh 9 int main() 10 { 11 printf("Hello,world!\n"); 12 return 0; 13 } 14 +vhsdgfidyreiwhfsdkfhsdk
15 diff -ruN mxh/test2.c mxh_modify/test2.c 16 --- mxh/test2.c 2010-10-27 18:58:35.683926806 -0700 17 +++ mxh_modify/test2.c 2010-10-27 19:10:02.055665894 -0700 18 @@ -1,3 +1,5 @@ 19 #include <s3c2440.h> 20 21 #define GPGCON *(unsigned int *)0x50000060 22 + 23 +djsljfdkslhfsdhriueyrew
|
(1)第1行和第15行表示原文件和修改过的文件。
(2)-:表示原目录下的文件,+表示新目录下的修改过的文件。
(3)根据上一条解释看第4行:@@ -1,7 +1,9 @@,这个表示什么意思呢?其中“-”表示原文件mxh/test1.c,“+”表示修改文件mxh_modify/test1.c.则“@@ -1,7 +1,9 @@”表示什么意思呢?---------原文件的1到7行有修改,具体修改内容看修改后的1到9行,也就是下面的内容。
(4)看5到14行,有“+”“-”符号的行,表示修改过的行,加减内容如其后的内容。
3.打补丁。
cd mxh 给mxh目录打补丁
patch -p1 <../mxh.patch |
4.撤销补丁,如果对你的补丁不满意,可以进行撤销。
patch -RE -p1 <../mxh.patch |
阅读(2007) | 评论(0) | 转发(1) |