quilt
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前后都有原文件的三行。
quilt的更多相关文章
- Linux之旅(1): diff, patch和quilt (下)
Linux之旅(1): diff, patch和quilt (下) 2 quilt 我们自己的项目能够用cvs或svn管理所有代码.但有时我们要使用其它开发人员维护的项目.我们须要改动一些文件,但又不 ...
- Linux游(1): diff, patch和quilt (下一个)
Linux游(1): diff, patch和quilt (下一个) 2 quilt 我们自己的项目可以用cvs或svn管理所有代码.但有时我们要使用其它开发人员维护的项目.我们须要改动一些文件.但又 ...
- debian包的补丁管理工具:quilt
最近项目是改pam软件包,给里面添加一些功能.其中遇到了更改后,代码提交方式的问题.这里转载的文章介绍了使用quilt管理补丁的详细方法: 转自:http://blog.csdn.net/fmddlm ...
- quilt - 制作patch的工具
quilt - 制作patch的工具 在尝试为openwrt做一个patch时,查到这个工具.openwrt官方已经有很详细的文档对步骤进行说明了. quilt并不是专为openwrt的开发工具.qu ...
- Ubuntu apt 常用命令
APT(the Advanced Packaging Tool)是Ubuntu 软件包管理系统的高级界面,Ubuntu 是基于Debian的,APT由几个名字以“apt-”打头的程序组成.apt-g ...
- 常look的Git命令
常用的Git命令 命令 简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply 应用补丁 git am 应用邮件格式补丁 git a ...
- Mosquitto搭建Android推送服务(二)Mosquitto简介及搭建
文章钢要: 1.了解Mosquitto服务器 2.在Liunx中搭建Mosquitto服务器 3.设置Mosquitto集群 一.Mosquitto简介 一款实现了消息推送协议 MQTT v3.1 的 ...
- CentOS_7 OpenWrt Eclipse 环境搭建与 Dr.com 开发笔记
一:内核的编译. 1,linux 编译环境的搭建与源码的准备工作 2,常用软件的安装 (make menuconfig) 3, 针对TP-Link WR740N 一些软件的openwrt 的移植 4 ...
- 如何参与Linux内核开发(转)
本文来源于linux内核代码的Document文件夹下的Hoto文件.Chinese translated version of Documentation/HOWTO If you have any ...
随机推荐
- HDU-5319 Painter,深搜标记!
Painter 题意:有一个棋盘n行,列数不超过50,用red和blue给这个棋盘涂色,每个格子每种颜色最多涂一次,如果两种颜色都涂了则该格子颜色为Green;red以斜杠'\'方式涂色,bule以' ...
- 【Luogu】P1602Sramoc问题(堆)
题目链接 很巧妙的想法.一开始将1~k-1加入堆中,然后每次从堆里取出一个最小的,判断是不是答案,如果不是,那么就枚举新数的末一位加上. 代码如下 #include<cstdio> #in ...
- [BZOJ1594] [Usaco2008 Jan]猜数游戏(二分 + 并查集)
传送门 题中重要信息,每堆草的数量都不一样. 可以思考一下,什么情况下才会出现矛盾. 1.如果两个区间的最小值一样,但是这两个区间没有交集,那么就出现矛盾. 2.如果两个区间的最小值一样,并且这两个区 ...
- Java中NIO、BIO、AIO相关概念及应用场景
1.同步阻塞IO(JAVA BIO):同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时,服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通 ...
- json格式前端显示
使用angular可以稍加修改. [转]http://web.jobbole.com/82865/ function output(inp) { document.body.appendChild(d ...
- 湘潭大学oj 1206 Dormitory's Elevator dp
27153 njczy2010 1206 Accepted 1976 KB 234 MS G++ 1415 B 2014-09-28 10:01:23 真是吐血ac,,,,这么easy的题..... ...
- PHP提示Cannot modify header information - headers already sent by解决方法
PHP提示Cannot modify header information - headers already sent by解决方法 因为 header();发送头之前不能有任何输出,空格也不行, ...
- webStorm汉化
http://www.sdbeta.com/xiazai/2015/0603/35070.html 注册时选择“License server”输入“http://idea.imsxm.com/”点击“ ...
- let与const命令
(需要注意的地方) 1.ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. 2.for循环还有一个特别之处,就是设置循环变量的那部分是一 ...
- Android Studio一些常用的快捷键
光标移动和窗口切换:1.esc:光标从功能窗口回到编辑窗口 2.alt+num:打开指定的功能窗口,重复操作关闭该窗口. 3.alt+←→:切换编辑的文件. 4.ctrl+home/end:跳转到文件 ...