步骤
生成空patch(quilt new filename.patch)->文件关联patch(quilt add {files})->修改文件->生成最终patch文件(quilt refresh)
1.生成一个空patch
quilt new 030-snd_soc_kconfig.patch
[yubo.wang@localhost linux-3.18.20]$ ls patches
series
2.文件关联patch(注:一定要在修改文件之前进行这个动作)
quilt add {files} //files=*,则是当前目录下所用文件,不包含子目录,如果需要子目录则subdir/*即可
[yubo.wang@localhost linux-3.18.20]$ quilt add sound/soc/codecs/Kconfig
File sound/soc/codecs/Kconfig added to patch patches/030-snd_soc_kconfig.patch
3.查看对比修改的patch内容
quilt diff
4.修改文件完后生成最终patch
quilt refresh
5.回退刚才的改动 (注:只回退文件的改动,对当前的patch文件没有回退,applied->unapplied)
quilt pop
6.取消文件对patch的关联,是与add相反的操作
quilt remove files
合并异常情况
打补丁主要是根据行号和修改内容前后3行进行定位,如果行号和前后3行都不能进行定位的话就会抛出异常。
Applying patch patches/platform/020-restore_sys.patch
patching file drivers/mtd/ubi/io.c
patching file drivers/quectel-drivers/qstart/qstart.c
Hunk #1 succeeded at 45 with fuzz 2 (offset 24 lines). 【fuzz是啥?有影响吗】
Hunk #2 succeeded at 296 with fuzz 2 (offset 151 lines).
Hunk #3 FAILED at 238. 【这里有空行和其他差异,需要解决】
Hunk #4 succeeded at 495 with fuzz 1 (offset 237 lines).
Hunk #5 succeeded at 508 (offset 237 lines).
Hunk #6 succeeded at 522 (offset 237 lines).
Hunk #7 succeeded at 591 (offset 237 lines).
Hunk #8 succeeded at 632 (offset 237 lines).
1 out of 8 hunks FAILED -- rejects in file drivers/quectel-drivers/qstart/qstart.c
Patch patches/platform/020-restore_sys.patch does not apply (enforce with -f)
主要关注succeeded和FAILED,succeeded一般情况下都是成功合入无需关注,需要解决FAILED抛出的异常。
Applying patch patches/platform/050-cut_nouse_debugmsg.patch【^M问题,dos2unix解决】
patching file drivers/i2c/busses/i2c-msm-v2.c
patching file sound/soc/msm/mdm9607.c
Hunk #1 FAILED at 916 (different line endings).
Hunk #2 FAILED at 998 (different line endings).
Hunk #3 FAILED at 1009 (different line endings).
3 out of 3 hunks FAILED -- rejects in file sound/soc/msm/mdm9607.c
这里是结尾符的问题需要转换。