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 ...
随机推荐
- phpstorm 修改头部注释
点击“setting”->"File Templates" ->"PHP File Header"
- POJ——3159Candies(差分约束SPFA+前向星+各种优化)
Candies Time Limit: 1500MS Memory Limit: 131072K Total Submissions: 28071 Accepted: 7751 Descrip ...
- 刷题总结——书架(bzoj1861)
题解: Description 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书,看完后放回书柜然 ...
- 【图论】bnuoj 52810 Splitting the Empire
acm.bnu.edu.cn/v3/contest_show.php?cid=9208#problem/G [题意] 给定一个无向图,要求把这个无向图的点划分到不同的集合里,使得每个集合的点之间两两没 ...
- 计算系数(codevs 1137)
题目描述 Description 给定一个多项式(ax + by)^k,请求出多项式展开后x^n y^m项的系数. 输入描述 Input Description 共一行,包含 5 个整数,分别为a,b ...
- Linux性能分析Top
前言 在实际开发中,有时候会收到一些服务的监控报警,比如CPU飙高,内存飙高等,这个时候,我们会登录到服务器上进行排查.本篇博客将涵盖这方面的知识:Linux性能工具. 一次线上问题排查模拟 背景:服 ...
- Codeforces Round #265 (Div. 2) C 暴力+ 找规律+ 贪心
C. No to Palindromes! time limit per test 1 second memory limit per test 256 megabytes input standar ...
- Perl语言--一些关于赋值、引用的东西
引用详解 一.定义引用有两种: 1.用斜线“\” 2.匿名引用 1.用反斜线的引用:数组.哈希.标量 数组的引用 my @array = (1,2,3); my $aref = \@array; 哈希 ...
- 前端开发之html篇
一.什么是html? 1.我们说socket网络编程的时候,提到过一个cs模型,就是客户端—服务端模型,前端开发也是基于网络编程,但是这时就应该是bs模型了,是浏览器与服务端的通信. 我们可以模拟一个 ...
- Scrapy学习-8-ItemLoader
ItemLoader使用 作用 方便管理维护重用xpath或css规则 实例 itemloader+图片处理 # items.py import scrapy from scrapy.loader ...