Chinaunix首页 | 论坛 | 博客
  • 博客访问: 917952
  • 博文数量: 84
  • 博客积分: 4334
  • 博客等级: 上校
  • 技术积分: 1610
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-27 07:49
文章分类

全部博文(84)

文章存档

2012年(5)

2011年(21)

2010年(58)

分类: LINUX

2010-10-28 09:55:43

一。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) |
给主人留下些什么吧!~~