zoukankan      html  css  js  c++  java
  • Linux-学习patch命令打补丁,diff命令制作补丁(3)

    • patch:通过补丁文件,来对原文件打补丁
    • diff:      比较两个文件,然后生成一个补丁文件

    1.patch用法  

     patch -p[剥离层级]  <[补丁文件]

    2.patch命令示例

    cd u-boot-1.1.6/             //进入原文件目录      
    
    patch -p1  <../u-boot-1.1.6_jz2440.patach   
    //“p”    表示去掉补丁文件里路径的第几部分。"1",表示去掉第1个
    //“<”    指补丁文件位置
    // “../” 表示返回上一个目录,因为这补丁文件和原文件在同一目录下

    为什么需要输入-p1?

    如下图所示,可以看到补丁文件里,每个需要改的文件,都有u-boot-1.1.6目录,而我们之前已经cd进入了,所以需要输入-p1,去掉它

    3.patch文件内容补充

    diff -urN u-boot-1.1.6/common/cmd_bootm.c u-boot-1.1.6_jz2440/common/cmd_bootm.c  //绿色代表原文件名以及文件地址,红色代表打上补丁后的新文件名以及地址
    --- u-boot-1.1.6/common/cmd_bootm.c    2006-11-02 22:15:01.000000000 +0800
    +++ u-boot-1.1.6_jz2440/common/cmd_bootm.c    2010-11-26 12:54:38.150155640 +0800
                                                //--- 对文件里代码删减     +++ 对文件里代码添加
    @@ -318,5 +318,5 @@                         //-318,5 表示在原文件里第318行内有删减,接下来显示5段。+318,5同样类似
                                                       //第318行,第一段
        switch (hdr->ih_comp) {                        //第319行,第二段
         case IH_COMP_NONE:                            //第320行,第三段
    -        if(ntohl(hdr->ih_load) == addr) {         //第321行,删减第四段
    +        if(ntohl(hdr->ih_load) == data) {         //第322行,增加第五段

    4.diff常用参数  

    • -u: 表示在比较结果中输出上下文中一些相同的行,这有利于人工定位
    • -r:  表示递归比较各个子目录下的文件
    • -N“:将不存在的文件当作空文件
    • -B: 忽略对空行的比较

    5.diff命令示例

     diff -urN   u-boot-2012.04.01   u-boot-2012.04.01_new > u-boot-2012.04.01_new.patch
                 //u-boot-2012.04.01:原文件
                 //u-boot-2012.04.01_new:修改后的新文件

     

    当一个文件有多个补丁需要打,则使用for循环批处理命令

    比如,在tmp/目录下打上../patches/目录下的所有补丁文件:

    cd tmp/
    
    for file in ../patches/*.patch; do patch -p1 < $file; done      
  • 相关阅读:
    php大文件分片上传
    ckeditor粘贴上传图片
    视频断点续传+java视频
    php上传文件夹 ​
    批量下载
    PHP上传超大文件解决方案
    js大文件上传
    java+web文件的上传和下载代码
    Webupload+PHP上传大文件
    【hdu1280】前M大的数
  • 原文地址:https://www.cnblogs.com/lifexy/p/7009706.html
Copyright © 2011-2022 走看看