2009年6月16日 星期二

[Linux Notes] - diff 、patch 使用方法
在Linux的编程过程中,经常会使用到补丁包Patch。实际上Patch就是diff的集合。

Diff 的使用 - 生成 Patch集合
diff -uNr old_dir new_dir > diff.patch

Patch 的使用 - 应用Patch集合
cd old_dir
patch -p1 < diff.patch
(忽略diff文件里的第一层目录信息,直接从第2层开始对文件打Patch)
patch -p1 -R < diff.patch
(反向打Patch,将new_dir变成old_dir)
Diff 输出文件格式解析
一个diff文件由补丁头和补丁差异的部分组成。
补丁头的表达如下:
补丁头是分别由—/+++开头的两行,用来表示要打补丁的文件。—开头表示旧文件,+++开头表示新文件。一个补丁文件中可能包含以—/+++开头的很多节,每一节用来打一个补丁。所以在一个补丁文件中可以包含好多个补丁。

diff -u 产生的patch 文件说明
— old.txt 标记源文件,说明old.txt是需要更改的文件
+++ new.txt 标记新文件,说明new.txt是新建立的文件
@@-1,5 +2,6@@ @@表示块的开始,@@表示块的结束
表示源文件的第1行以下的5行内容与目标文件的第2行以下的6行内容有不同。
-aasa
+asas 表示删除源文件中aasa的内容,修改为目标文件中asas的内容。
Diff 和Patch 命令使用小结
单个文件
diff –uN from-file to-file >to-file.patch
patch –p0 < to-file.patch
patch –RE –p0 < to-file.patch
多个文件
diff –uNr from-docu to-docu >to-docu.patch
patch –p1 < to-docu.patch
patch –R –p1

沒有留言:

張貼留言