• 源码维护基本命令diff_patch_quilt


    源码维护基本命令

    一. diff--生成补丁

    diff [命令行选项] 源文件 新文件

    -r 递归处理相应目录

    -N 包含新文件到patch

    -u 输出统一格式(unified format),这种格式比缺省更紧凑些

    -p 如果不同在函数中,则提示所在函数名

    -a 可以包含二进制文件到patch中

    -N 视不存在的文件为空文件来比较

    -x PATTERN 忽略PATTERN匹配的文件

    diff –ruN test1.txt test2.txt > test.patch

    二. patch--打补丁

    patch -pn(n为自然数) < patch文件

    $patch –p<n> <diff_file
    $cat diff_file | patch –p<n>
    $bzcat diff_file.bz2 | patch –p<n>
    $zcat diff_file.gz | patch –p<n>
    <n>代表按照patch文件的路径忽略的目录级数,每个“/”代表一级。

    p0是完全按照补丁文件中的路径查找要修改的文件

    p1则使用去掉第一级“/”得到的相对路径,再基于当前目录,到相应的相对路径下查找要修改的文件。

    考虑到顶层目录在不同的系统上可能有所不同,要使用这个选项,就要把patch文件放到要被打补丁的目录下,然后在这个目录下运行命令。

    如linux-2.6.14 –> linux-2.6.15 => patch-2.6.14.15,打补丁

    $bzcat ../patch-2.6.14.15.bz2 | patch –p1     //上一目录
    $patch -p0 <patch-2.6.14.15.bz2                //被打补丁的目录

    三. quilt--补丁管理

    quilt命令同样具有生成补丁和应用补丁的功能,但它的优势是还可以作为管理补丁的工具。一个比较大的项目可能由不同开发者共同维护,其中很多修改都以补丁的方式提供,这些补丁可能存在依赖关系。

    quilt工具在源代码目录中生成一个patches/目录,里面存放所有可用的补丁,记录了所有patches的先后顺序,并提供了一系列操作这些补丁的命令。

    quilt以栈的形式管理补丁,最先打上的补丁位于栈底,最后打上的补丁位于栈顶(top)。打patch的动作称为push,取消补丁的动作称为pop。就如下图所示,项目中有5个patch,最新的patch为e.patch,所以quilt将这个patch放在栈顶,通过维护这样一个结构,quilt可以继续打新patch或按顺序回退patch。

    源代码的patch文件的先后顺序可以查看patches/目录下的series文件。

    参考:diff/patch命令以及quilt工具的使用

  • 相关阅读:
    浅谈过载保护
    HDU 4893 Wow! Such Sequence!(线段树)
    汇编学习-堆栈与子程序
    HDU1863_畅通project【Prim】【并查集】
    mybatis批量插入oracle大量数据记录性能问题解决
    iOS开发自己定义键盘回车键Return Key
    ubuntu server 14.04 vncserver with gnome
    MYSQL: Cannot delete or update a parent row: a foreign key constraint fails
    windows Compiler toolchain env
    C基本语句测试
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/6012441.html
Copyright © 2020-2023  润新知