diff命令
diff [option] file1 file2
按“行”比较两个文件的差异。可以比较文件或目录。
option:
-c: 完整的显示两个文件不同行的上下文
-c -C num: 显示上下文的行数,默认为3
-u: 以unified格式显示不同
-u -U num: 显示上下文的行数,默认为3
-p:如果不同在函数中,则提示所在函数名
-r:递归的比较所有子目录
-N:视不存在的文件为空文件来比较
-x PATTERN: 忽略PATTERN匹配的文件
例如,比较compdir01和compdir03两个文件夹,忽略其中的.patch文件:
diff -u compdir01 compdir03 -x *.patch
-X patternfiles: 忽略patternfiles文件中指定的所有PATTERN
[root@ubuntu]others:$ cat patternfiles
main.c
backtrace.h
diff -u compdir01 compdir03 -X patternfiles
生成一个patch:
diff -u compdir01 compdir03 > compdir.patch
patch命令
打patch:patch -pN < compdir.patch
其中N为需要剥掉的文件名中的目录级数,例如,compdir.patch文件中指明的文件名为:
/home/myname/personale/compdir01/backtrace.c
而你的backtrace.c文件在/home/yourname/compdir01/目录下,
那你就需要将patch拷贝到/home/yourname/目录下,然后执行
patch -p3 < compdir.patch
即剥掉patch文件中的/home/myname/personale/前缀。
或者将patch拷贝到/home/yourname/compdir01/目录下,然后执行
patch -p4 < compdir.patch
即剥掉patch文件中的/home/myname/personale/compdir01/前缀。
记住,打patch的时候不要过分依赖patch命令,打完之后一定要检查代码。另外,尽量在原始项目中打patch,避免冲突。
quilt命令
quilt命令同样具有生成补丁和应用补丁的功能,但它的优势是还可以作为管理补丁的工具。一个比较大的项目可能由不同开发者共同维护,其中很多修改都以补丁的方式提供,这些补丁可能存在依赖关系。quilt工具在源代码目录中生