====== patch过程 ====== patch 过程分三个大的步骤:一是用diff工具比较新旧代码,生成patch文件;二是使用patch命令,将patch文件合并到原有代码;三是检查有无无法patch的文件,修改或重新选择是否对其做patch。 ----   1、准备测试文件     [root@lihao work]$ cat test_old     test old     [root@lihao work]$ cat test_new     test new   2、使用diff创建补丁test.patch     [root@lihao work]$ diff -uN test_old test_new > test.patch     【注:因为单个文件,所以不需要-r选项。选项顺序没有关系,即可以是-uN,也可以是-Nu。】     [root@lihao work]$ ls     test_old test_new test.patch   3、patch文件结构     [root@lihao work]$ cat test1.patch     --- test_old 2012-05-01 22:44:05.000000000 +0800     +++ test_new 2012-05-01 22:35:22.000000000 +0800     @@ -1 +1 @@     -lihao old     +lihao new   说明:     补丁头:     补丁头是分别由---/+++开头的两行,用来表示要打补丁的文件。---开头表示旧文件,+++开头表示新文件。     块:     块是补丁中要修改的地方。它通常由一部分不用修改的东西开始和结束。他们只是用来表示要修改的位置。他们通常以@@开始,结束于另一个块的开始或者一个新的补丁头。     块的缩进:块会缩进一列,而这一列是用来表示这一行是要增加还是要删除的。     块的第一列     +号表示这一行是要加上的。     -号表示这一行是要删除的。     没有加号也没有减号表示这里只是引用的而不需要修改。   4、patch文件的使用(让test_old升级到test_new)     [root@lihao work]$ patch -p0 < test.patch     patching file test_old     [root@lihao work]$ cat test_old     test new   5、恢复被patch过的文件(撤销test_old的升级)     [root@lihao work]$ patch -R -p0 < test.patch     patching file test_old     [root@lihao work]$ cat test_old     test old