文章目录

  • Quilt
    • 使用场景
      • 不好
    • 操作(基本)
    • 操作(高级)
    • 流程
      • 以OpenWrt - strongSwan为例:
  • Git
    • 使用场景:
    • 操作
  • 鸣谢

常用补丁工具操作及适用场景,不仅限于Linux/OpenWrt。

Quilt

网上教程几乎看不到(估计是这个工具的名字不太好,冲突了),补丁生成后会在Makefile目录下生成patches目录,用于存放quilt格式补丁文件。
$ ls feeds/packages/strongswan
files Makefile patches

使用场景

  • 源码使用quilt打补丁,那就照着套路来,继续用quilt;

  • 对已打包好的源码包进行二次开发(不解包无法看到源码全貌),如:

    • Linux内核
    • OpenWrt中feeds目录下的绝大部分第三方软件包

  • 省去手动解包打包流程
  • 只是在源码包的基础上进行修改,patch默认置于外部,也就无需重新回填MD5校验值(Makefile)
  • 回滚操作简单

不好

  • 修改权限不能(644->755)
  • 每次都需要先quilt push -a,略麻烦
  • 同时修改多个旧补丁文件,容易引发冲突(简单的办法是只管往上叠,后面再合并旧的)

操作(基本)

  • 安装
    sudo apt-get install quilt

  • 查看最近的补丁(最后一个)(初始为空)
    quilt top

  • 应用补丁(压栈)

    • 所有:quilt push -a
    • 到指定位置:quilt push 013-redirect-all-traffic.patch(001->013)
    • 单个:quilt push
  • 取消应用(弹栈)(回滚)

    • 所有:quilt pop -a
    • 到指定位置:quilt pop 002-helloworld.patch(013->002)
    • 单个:quilt pop
  • 创建补丁
    quilt new xxx-new-page-about-patch-tools.quilt

  • 添加欲修改文件(记录下文件初始状态)
    quilt add README.md

  • 修改,开发
    quilt edit README.md
    你不一定要用quilt edit来对文件进行修改,edit只是调取外部编辑器供用户编辑,完后quilt再自动与初始副本进行比较,得出差异项(patch),于是乎:
    你可以使用其它喜欢的编辑器(Sublime/gVim/VsCode…)来编辑,保存后只需来一句:quilt refresh
    (常用如scp/sftp,远程编辑)

  • 保存为patch
    quilt refresh

  • 查看当前补丁中已修改文件
    quilt files

  • 已修改(当前补丁)
    quilt diff

操作(高级)

Debian Wiki - UsingQuilt

流程

以OpenWrt - strongSwan为例:

  1. 准备环境,释放代码,准备补丁库
    make package/feeds/packages/strongswan/{clean,prepare} V=s QUILT=1
  2. 切换至临时开发目录
    cd build_dir/target*/strongswan*/
  3. 打补丁
    应用所有
    quilt push -a
    应用部分
    quilt push XXX-redirect...patch
    撤销补丁
    quilt pop XXX-redirect...patch
    撤销所有
    quilt pop -a
    当前补丁
    quilt top
  4. 新增补丁或编辑旧补丁
    quilt new xxx-*.patch
  5. 添加追踪
    quilt add xxx.c
  6. 编辑
    quilt edit xxx.c
  7. 确认修改(可选)
    quilt files && quilt diff
  8. 保存修改
    quilt refresh
  9. 回到主目录,将补丁从临时开发目录更新至补丁库(Makefile同级patches)
    cd ../../../ && make package/feeds/packages/strongswan/update V=s
  10. 重新编译
    make package/feeds/packages/strongswan/{clean,compile} V=s

V=s相当于Verbose,输出详细log

Git

教程多,主流
理解原理才能有效避免合并冲突
廖雪峰Git教程 - 分支管理

使用场景:

  • 使用git clone的代码
  • 使用git进行代码管理的软件
  • 完整代码可直接浏览(与quilt相反)

操作

Git Daily

鸣谢

前同事,他姓黄
给LuCI挖的坑
OpenWrt交叉编译环境

补丁工具Quilt与Git相关推荐

  1. linux的补丁管理工具--quilt

    2.1 基本概念 quilt是一个帮助我们管理补丁的程序.quilt的命令格式类似于cvs: quilt 子命令 [参数] 0.46版的quilt有29个子命令. 掌握quilt的关键是了解使用qui ...

  2. (50)FPGA面试技能提升篇(版本控制工具Clearcase、Git)

    1.1 FPGA面试技能提升篇50(版本控制工具Clearcase.Git) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试技能提升篇50(版本控制工具Cl ...

  3. GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟。...

    GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟. 支持输出多种格式 GitBook支 ...

  4. 【安卓开发系列 -- 开发环境】Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具)

    [安卓开发系列 -- 开发环境]Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具) [1]Unbuntu ...

  5. nck课程笔记:破解补丁工具的使用

    破解一个程序的时候我们可以通过搜索字符串的方式来寻找关键点,那么假如我们在编写一个程序的时候,怎么提防这种简单的暴破方式呢? 上一篇文章中已经提到过od里面实现搜索字符串功能是一个插件,视频中的作者给 ...

  6. 遥望星空补丁工具 V1.7

    2011-3-10遥望星空补丁生成工具 V1.7 1.修正一键发布没有考虑重复文件类型(例如配置文件,XML等)的BUG: 2011-2-24遥望星空补丁生成工具 V1.6.3 1.修正一键发布每个补 ...

  7. 微信小程序开发工具初次使用Git 记录一下

    微信开发工具版本号: 这里只是简单记录一下开发工具内的git使用. 首先是点击微信开发者工具内的版本管理(如图): 会出现如下界面,然后点击初始化仓库,然后点击确定. 然后直接点击设置 去添加你的远程 ...

  8. 工具 好用的一些windows工具,包括git、录屏、ps、navicat等等,后续会持续更新

    一.好用的一些windows工具,包括git.录屏.ps.navicat等等,后续会持续更新 不明白怎么安装的可以在评论区留言~ 二.下载链接 链接:https://pan.baidu.com/s/1 ...

  9. Git的具体使用,包括安装Git工具,把Git和IDEA结合,使用分支

    文章目录 Git的具体使用,包括安装Git工具,把Git和IDEA结合,使用分支 git安装及环境配置 git的必要配置 git config -l git config --system --lis ...

最新文章

  1. 计算机等级必须在学校考吗,计算机等级考试可以跳过一级考二级吗
  2. mysql备份slave_MySQL主(Master)从(Slave)备份;
  3. 使用Web.Config Transformation配置灵活的配置文件
  4. 产品设计眼中的运营,互联网营销
  5. UOJ#449. 【集训队作业2018】喂鸽子
  6. linux查看网卡连接哪个cpu,Linux查看CPU/内存/网卡/操作系统信息
  7. 2010.7.27 OnDraw与OnPaint有什么区别
  8. Android对话框动态加载布局
  9. Java中反射性能测试
  10. 苹果清除感染 XCodeGhost 的应用
  11. Second copy 的增量备份
  12. 造移动厕所的,转做核酸采样亭。火了
  13. JAVA 实现《飞机大战-III》游戏
  14. 用python画简单的图形
  15. 学mysql需要英语水平多高_大学英语专业挂科率高吗
  16. 电机速度曲线规划_S曲线
  17. Hyper-V 配置静态 IP
  18. 虚拟机配置文件vmx放置路径问题
  19. 订单紧急变动?交期无法确定?APS了解一下
  20. Android -- 每日一问:在项目中使用AsyncTask会有什么问题吗?

热门文章

  1. 怎么快速将操作系统迁移到另一台电脑
  2. 《高效学习魔法书》——读书笔记
  3. 实现点击微信头像实现放大头像、缩放头像、保存头像效果
  4. 【C/C++】二分查找算法模板总结(适用于大多数情况)
  5. C# 一、From窗体
  6. 为啥QQ登录一直要求输入验证码
  7. UGUI血条渐渐减掉实现
  8. 景区传统市场营销已死,智慧景区志在必行!
  9. html 打开方式6,教你aspx文件的打开方式
  10. 天乐文本文件按行分割器_v1.0正式版【专业制作极速分割】