quilt

本文详细介绍了Quilt补丁管理工具的使用方法,包括创建补丁、应用补丁的过程,以及如何处理系列补丁文件。同时,还探讨了补丁定位、升级等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 什么是quilt

quilt是一个patch管理工具,特别适合于对多个patch进行管理。

quilt是基于gnu patch和diff的。

2 使用quilt创建一个patch

第一步,quilt new xxx.patch,创建一个patch文件。

第二步,quilt edit xxx

            quilt edit xxx

            ......

进行各种修改,这些修改将会放在上面创建的patch中。

或者,quilt add xxx,然后直接去修改xxx文件即可。

第三步,quilt refresh

将修改写入patch文件中。

3 已经有了patch,打补丁

原工程目录结构和补丁分别应该放在哪里,另外,quilt push命令要在哪里执行?

关键是.pc和patches目录

所有的patch都放在patches这个目录下。

这个patches目录可以用QUILT_PATCHES环境变量来指定。

.pc目录放在patches同级目录即可。

这样quilt就可以找到patches了,quilt push在任何地方都可以执行。

 

4 关于series文件

这文件一行是一个patch,前面的patch先打,后面的后打。

5 quilt upgrade

因为其它人用的quilt的版本可能更高,所以,在执行quilt命令前先upgrade一下比较好。

6 打补丁的时候,quilt如何知道该patch是打给哪个文件的

打补丁的时候,是patch在打,首先,这个跟当前的工作目录有关,patch会去当前的工作目录下找要打patch文件,也就是说,patch的目标文件。查找目标文件是相对于当前目录而言的。

然后,还有一个-pN参数和patch文件头路径,比如“linux/Makefile”,如果是-p0,那么直接在当前工作目录下找linux文件夹,然后找linux文件夹下的Makefile文件。如果是-p1,那么直接在当前工作目录下找Makefile文件,也就是说,p1话,会丢掉patch文件头路径的第一个“/”及其之前的路径。同理,pN会丢掉第N个“/”及其之前的路径。

而,quilt在series文件中可以指定该patch的-pN,比如patchRp0.diff -p0,这样quilt就告诉patch,该patch使用-p0。如果在series文件中不指定-pN,quilt默认的是-p1。

所以,信息来自三个地方:第一,当前工作目录;第二,patch文件的头路径;第三, -pN,来自serires文件或者默认。

7 同一个文件被修改了多次,有多个patches,这些patches的行号是如何同最终的文件对应上的?

同一个文件有多个patches时,是按照顺序来打patch的,original文件,先打patch1,变成了orignal+patch1文件,然后在这个文件的基础上打patch2,依次类推。

patch前面的编号,在patch的context格式下,意思不大,它只是提供一个初始定位。当在原始文件中,没有定位到整个context时,patch会弄向前向后偏移去继续定位context。如果还没有找到,它会把context前后减一行,然后继续定位。还没有找到,把context减二行继续定位,还是找不到,返回error,失败。只要找到了,就会打patch。这也是为什么contex格式下,patch的每个hunk前后都有原文件的三行。

 

转载于:https://www.cnblogs.com/hustdc/p/7291804.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值