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的更多相关文章

  1. Linux之旅(1): diff, patch和quilt (下)

    Linux之旅(1): diff, patch和quilt (下) 2 quilt 我们自己的项目能够用cvs或svn管理所有代码.但有时我们要使用其它开发人员维护的项目.我们须要改动一些文件,但又不 ...

  2. Linux游(1): diff, patch和quilt (下一个)

    Linux游(1): diff, patch和quilt (下一个) 2 quilt 我们自己的项目可以用cvs或svn管理所有代码.但有时我们要使用其它开发人员维护的项目.我们须要改动一些文件.但又 ...

  3. debian包的补丁管理工具:quilt

    最近项目是改pam软件包,给里面添加一些功能.其中遇到了更改后,代码提交方式的问题.这里转载的文章介绍了使用quilt管理补丁的详细方法: 转自:http://blog.csdn.net/fmddlm ...

  4. quilt - 制作patch的工具

    quilt - 制作patch的工具 在尝试为openwrt做一个patch时,查到这个工具.openwrt官方已经有很详细的文档对步骤进行说明了. quilt并不是专为openwrt的开发工具.qu ...

  5. Ubuntu apt 常用命令

     APT(the Advanced Packaging Tool)是Ubuntu 软件包管理系统的高级界面,Ubuntu 是基于Debian的,APT由几个名字以“apt-”打头的程序组成.apt-g ...

  6. 常look的Git命令

    常用的Git命令   命令  简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply   应用补丁 git am  应用邮件格式补丁 git a ...

  7. Mosquitto搭建Android推送服务(二)Mosquitto简介及搭建

    文章钢要: 1.了解Mosquitto服务器 2.在Liunx中搭建Mosquitto服务器 3.设置Mosquitto集群 一.Mosquitto简介 一款实现了消息推送协议 MQTT v3.1 的 ...

  8. CentOS_7 OpenWrt Eclipse 环境搭建与 Dr.com 开发笔记

    一:内核的编译. 1,linux 编译环境的搭建与源码的准备工作 2,常用软件的安装 (make menuconfig) 3,  针对TP-Link WR740N 一些软件的openwrt 的移植 4 ...

  9. 如何参与Linux内核开发(转)

    本文来源于linux内核代码的Document文件夹下的Hoto文件.Chinese translated version of Documentation/HOWTO If you have any ...

随机推荐

  1. redis中redis.conf配置文件

    redis.conf文件配置解释 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize yes 2. 当Redis以守护进程方式运行时,Red ...

  2. shell文件包含

    像其他语言一样,Shell 也可以包含外部脚本,将外部脚本的内容合并到当前脚本. Shell 中包含脚本可以使用: . filename 或 source filename 两种方式的效果相同,简单起 ...

  3. [luoguP3110] [USACO14DEC]驮运Piggy Back(SPFA || BFS)

    传送门 以 1,2,n 为起点跑3次 bfs 或者 spfa 那么 ans = min(ans, dis[1][i] * B + dis[2][i] * E + dis[3][i] * P) (1 & ...

  4. Office 中的各种小tips(更新中)

    1.Word 中打字输入会擦掉之后原有字符,出现“吃字”的情况? 要将“改写”切换为“插入”,最简单的方法就是点击键盘上小键盘旁边的“insert”键. 其实仔细观察的话,在word文档下方,会看到如 ...

  5. WMAP 启动报错 PHP- 提示缺少 msvcr110.dll 的问题

    问题描述:  启动 php-cgi 时如果提示缺少 msvcr110.dll 问题原因:  缺少 vc++ 2012 运行库    问题解决: 需要安装 vcredist_x64.exe 或 vcre ...

  6. 魔法森林(bzoj 3669)

    Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节 ...

  7. Laravel 之文件上传

    配置文件: config/filesystems.php, 新建存储空间 'uplaods' => [ 'driver' => 'local', 'root' => storage_ ...

  8. Day 9 Linux samba & ngnix

    (摘) Samba服务 一.Samba简介  Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服 ...

  9. Day 1 计算机基础

    计算机基础 一.为什么学习计算机基础? 编程语言的作用:人类使机器明白并动作的指令.类似:人文社会的英语.   关系:计算机硬件 —— 操作系统(OS) —— 软件(编程语言成品,学习成果). 自语: ...

  10. django cookie session操作

    Cookie是什么? cookie说的直白点就是保存在用户浏览器端的一个键值对,举个例子,你现在登录了京东商城,你把浏览器关闭之后,你再打开京东,你还是可以对你的账户继续操作,已经购买的商品,订单都是 ...