zoukankan      html  css  js  c++  java
  • Linux下创建 code diff 和 合并 patch

    Linux 下经常需要给别人提供 patch 以及合 patch,这时需要用到 Linux 的 diff 和 patch 命令。

    1. diff 命令

      diff 命令常用来比较文件、目录,也可以用来制作补丁文件。所谓 “补丁文件” 就是 “修改后的文件” 与 “修改前(原始文件) ” 的差别。

      常用选项如下:

      1. “-u” : 表示在比较结果中输出上下文中一些相同的行,这有利于人工定位。

      2. “-r” :表示递归比较各个子目录下的文件。

      3. “-N”:将不存在的文档当做空文件。

      4. “-w”:忽略对空格的比较。

      5. “-B” :忽略对空行的比较。

    EX:假设 linux-2.6.22.6 目录中是原始的内核,linux-2.6.22.6_ok 目录中是修改过的内核,可以使用以下命令制作补丁文件 linux-2.6.22.6_ok.diff (原始目录在前,修改过的目录在后)。

    $ diff -urNwB  linux-2.6.22.6  linux-2.6.22.6_ok > linux-2.6.22.6_ok.diff
    

      由于 linux-2.6.22.6 是标准的代码,可以从网上自由下载。要发布 linux-2.6.22.6_ok 中所做的修改时,只需要提供补丁文件 linux-2.6.22.6_ok.diff (通常文件很小)。

    2. patch 命令

      patch 命令被用来打补丁 -- 就是依据补丁文件来修改原始文件。比如对于上面的例子,可以使用以下命令将补丁文件 linux-2.6.22.6_ok.diff 应用到原始目录 linux-2.6.22.6 上去。假设 linux-2.6.22.6_ok.diff 和 linux-2.6.22.6 位于同一目录下。

    $ cd linux-2.6.22.6
    $ patch  -pl < ../linux-2.6.22.6_ok.diff
    

      patch 命令中最重要的选项是 “-pn”:补丁文件中指明了要修改的文件路径,“-pn” 表示忽略路径中第n 个斜线之前的目录。

      假设 linux-2.6.22.6_ok.diff 中有如下几行:

    diff -urNwB  linux-2.6.22.6/A/B/C.h  linux-2.6.22.6_ok/A/B/C.h
    - - -  linux-2.6.22.6/A/B/C.h 2007-08-31 02:21:01.00000000  -0400
    +++ linux-2.6.22.6_ok/A/B/C.h 2007-09-20 18:11:46.00000000  -0400
    ......
    

      使用上述命令打补丁是,patch命令依据 “linux-2.6.22.6/A/B/C.h ”,寻找源文件,“ -p1 ” 表示忽略第1个斜线之前的目录,

      所以要修改的源文件是当前目录下的:

     A/B/C.h
    

      

  • 相关阅读:
    powerbulider9.0在数据窗口中实现滚动到新添加行
    C#获取当前路径,获取当前路径的上一层路径
    java开发工具使用
    plsql高级查询命令
    oracle基础命令
    oracle-11g-64位安装和plaql
    初识设计模式(装饰者模式)
    初识设计模式(观察者模式)
    观察者模式与发布订阅者模式的区别
    初识设计模式(策略模式)
  • 原文地址:https://www.cnblogs.com/computer1-2-3/p/11782743.html
Copyright © 2011-2022 走看看