您的位置:首页 > 产品设计 > UI/UE

源码维护基本命令diff_patch_quilt

2016-10-30 09:02 190 查看

源码维护基本命令

一. diff--生成补丁

diff [命令行选项] 源文件 新文件

-r 递归处理相应目录

-N 包含新文件到patch

-u 输出统一格式(unified format),这种格式比缺省更紧凑些

-p 如果不同在函数中,则提示所在函数名

-a 可以包含二进制文件到patch中

-N 视不存在的文件为空文件来比较

-x PATTERN 忽略PATTERN匹配的文件

diff –ruN test1.txt test2.txt > test.patch


二. patch--打补丁

patch -pn(n为自然数) < patch文件

$patch –p<n> <diff_file
$cat diff_file | patch –p<n>
$bzcat diff_file.bz2 | patch –p<n>
$zcat diff_file.gz | patch –p<n>
<n>代表按照patch文件的路径忽略的目录级数,每个“/”代表一级。


p0是完全按照补丁文件中的路径查找要修改的文件

p1则使用去掉第一级“/”得到的相对路径,再基于当前目录,到相应的相对路径下查找要修改的文件。

考虑到顶层目录在不同的系统上可能有所不同,要使用这个选项,就要把patch文件放到要被打补丁的目录下,然后在这个目录下运行命令。

如linux-2.6.14 –> linux-2.6.15 => patch-2.6.14.15,打补丁

$bzcat ../patch-2.6.14.15.bz2 | patch –p1     //上一目录
$patch -p0 <patch-2.6.14.15.bz2                //被打补丁的目录


三. quilt--补丁管理

quilt命令同样具有生成补丁和应用补丁的功能,但它的优势是还可以作为管理补丁的工具。一个比较大的项目可能由不同开发者共同维护,其中很多修改都以补丁的方式提供,这些补丁可能存在依赖关系。

quilt工具在源代码目录中生成一个patches/目录,里面存放所有可用的补丁,记录了所有patches的先后顺序,并提供了一系列操作这些补丁的命令。

quilt以栈的形式管理补丁,最先打上的补丁位于栈底,最后打上的补丁位于栈顶(top)。打patch的动作称为push,取消补丁的动作称为pop。就如下图所示,项目中有5个patch,最新的patch为e.patch,所以quilt将这个patch放在栈顶,通过维护这样一个结构,quilt可以继续打新patch或按顺序回退patch。



源代码的patch文件的先后顺序可以查看patches/目录下的series文件。

参考:diff/patch命令以及quilt工具的使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: