Quilt使用入门介绍_第1页
Quilt使用入门介绍_第2页
Quilt使用入门介绍_第3页
Quilt使用入门介绍_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、quilt 使用介绍为什么需要 quilt ?过去,源码包和 patch 存放在不同的 tarball 文件中,在编译时再解压缩,应用 patch 补丁到源码文件中, 然后再编译成可执行文件。随着时间推移,官方软件包会接收一些补丁到发布版本中,但是也会有一些新的独立改变产生,随之而来是大量的 patch 文件。一部分文件被上游仓库接收后,该patch 会被删除,剩余的patch 仍需要正常应用到上游代码; 另外还 patch 文件之间存在依赖关系, 后面应用的 patch 文件可能依赖前面的 patch 文件, 即 patch 文件是按照顺序应用的。当代码库中存在大量的 patch 文件时,

2、特别是内核补丁,可能达到上千个, 此时如果手动应用 patch 文件,是不可以想象的。quilt 就是用来管理大量 patch 文件的。quilt 其实 是 一 个 shell 脚本,可以在源码目录树中任意位置调用quilt 命令(quilt 向上扫描目录直到找到 .pc 或 patches 目录文件为止)。此处需要说明,我们可以通过设置 QUILT_ PATCHES 变量值来改变 quilt 默认启动行为,后面会具体描述。quilt 原理quilt 会在 patches/series 文件中记录当前管理的补丁。补丁按照加入的顺序排列。quilt 使用堆栈来管理补丁。quilt push 会将

3、补丁加入到堆栈。quilt pop 将堆栈补丁退出堆栈。quilt previous/quilt next 用来查看栈顶补丁之前已应用的补丁/ 下一个可应用的补丁。见下图所示。quilt applied/quilt unapplied 用来已应用补丁或未应用的补丁文件。注:所有 quilt 子命令可通过 quilt cmd -h 来查看帮助信息(cmd 为子命令)见图。77quilt 常用命令说明常 用 命 令 有 quilt new, quilt push,quilt pop, quilt add, quilt refresh, quilt files, quilt applied, qui

4、lt unapplied, quilt series 等quilt new创建一个新的补丁文件Patch patches/int-1.diff is now on toplxylxy-PC:/quilt_exercise$ quilt new int-1.diff查看目录可以看到多了 .pc 和 patches. . patches .pclxylxy-PC:/quilt_exercise$ ls -apatches 此时只有一个 series 文件 , 因为此时patch 文件还未有内容。quilt topquilt new 创建一个补丁文件,并推入到堆栈。通过 quilt top 可以查看

5、当前栈顶补丁文件。quilt add将指定文件与当前栈顶补丁文件关联起来。File int.c added to patch patches/int-1.difflxylxy-PC:/quilt_exercise$ quilt add int.c此后,所有 int.c 中的改变都会更新到 int-1.diff 文件中。quilt refresh通过 quilt add 命令关联补丁文件和源文件后, 执行 quilt refresh 将更新补丁文件。我们首先给 int.c 添加内容如下#includeint intialize();patches/int-1.difflxylxy-PC:/qui

6、lt_exercise$ quilt topquilt seriespatches/int-1.difflxylxy-PC:/quilt_exercise$ quilt series列出 series 文件中所有补丁文件+int intialize();+#include -0,0 +1,3 + quilt_exercise/int.c- /dev/null=Index: quilt_exercise/int.clxylxy-PC:/quilt_exercise$ cat patches/int-1.diffRefreshed patch patches/int-1.difflxylxy-PC

7、:/quilt_exercise$ quilt refreshquilt patches /quilt filesquilt pathes 用来列出指定文件相关的 patch 文patches/test3.txtpatches/test2.diffpatches/int-1.difflxylxy-PC:/quilt_exercise$ quilt unappliedNo patches appliedlxylxy-PC:/quilt_exercise$ quilt appliedNo patches appliedRemoving int.cRemoving patch patches/int

8、-1.diffRemoving test2.txtRemoving patch patches/test2.diff件,quilt files 则是用来列出和 patch 关联的源代码文件 , 不指定 patch 则默认为栈顶 patch 文件。int.cdifflxylxy-PC:/quilt_exercise$ quilt files patches/int-1.patches/int-1.difflxylxy-PC:/quilt_exercise$ quilt patches int.cquilt pop/quilt push/quilt applied/quilt unappliedt

9、xtFile series fully applied, ends at patch patches/test3.lxylxy-PC:/quilt_exercise$ quilt unappliedpatches/test3.txtpatches/test2.diffpatches/int-1.difflxylxy-PC:/quilt_exercise$ quilt applied使用 quilt new 增加另外两个 patch 文件, test2.diff,test3.diff,并将test2.txt 与test2.diff 关联, test3.txt 与 test3.diff 关联。重新

10、应用所有补丁文件patches/test3.txtpatches/test2.diffpatches/int-1.difflxylxy-PC:/quilt_exercise$ quilt seriespatches/test3.txtpatches/test2.diffpatches/int-1.difflxylxy-PC:/quilt_exercise$ quilt applied查看应用补丁文件将所有应用的补丁文件撤销quilt 管理 deb 包补丁文件使用 quilt 管理 deb 包补丁文件,需要额外做一些配置工具。deb 包补丁放置debian/patches 目录, 使用 quil

11、t 应用补丁前,需要配置 .quiltrc 文件(位于家目录下)。/UsingQuilt 给出的配置文件如下:Removing test3.txtRemoving patch patches/test3.txtlxylxy-PC:/quilt_exercise$ quilt pop -aQUILT_PATCHES=debian/patchesQUILT_NO_DIFF_INDEX=1QUILT_NO_DIFF_TIMESTAMPS=1QUILT_REFRESH_ARGS=-p abQUILT_DIFF_ARGS=-color=auto # If you want somerem=1;31:di

12、ff_hunk=1;33:diff_ctx=35:diff_cctx=33QUILT_COLORS=diff_hdr=1;32:diff_add=1;34:diff_QUILT_PATCH_OPTS=-reject-format=unifiedcolor when using quilt diff.如果不想配置.quiltrc 文件, 也可以将下面两行在终端运行或者添加到 /.bashrc 文件中。timestamps -no-indexe xport QUI LT_REFRESH_ARG S=-p ab -no -export QUILT_PATCHES=debian/patches为了能在

13、 deb 包内任意路径都能使用 quilt ,建议在 .quiltrc 文件中加入如下代码片段使 用 quilt 时 需 要 设 置 QUILT_PATCHES=debian/ patches, 否则可能找不到 series 或补丁文件,另外很多命令支持 -p 设置补丁格式风格, 具体可以通过quilt cmd -h 来查看帮助信息。参考资料Linux 之旅 (1): diff, patch 和 quilt (下)http:/ HYPERLINK /text28.html /text28.htmlHow To Survive With Many Patches https:/ /doc/quilt/quilt.htmlUsingQuilt /UsingQuilt Quilt Tutorial Shakthi Kannanfiif ! -d $d/debian/patches ; then mkdir $d/debian/patches; fiQUILT_PATCHES=debian/patchesCHESPAT # if in Debian packaging tree with unset $QUILT_if -d $d/debian & -z $QUILT_PATCHES ; thend=$d/.; doned=. ; while !

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论