zoukankan      html  css  js  c++  java
  • diff补丁格式


    title: diff补丁格式
    tags: 学习
    categories: 学习
    date: 2018-09-20 21:03:53

    diff补丁格式

    在Uboot学习中,接触到了打补丁这个操作,首先来学习下diff的patch文件格式.

    命令参数

    diff

    1. ”-u”:表示在比较结果中输出上下文中一些相同的行
    2. “-r“:表示递归比较各个子目录下的文件
    3. “-N“:将不存在的文件当作空文件
    4. “-w“:忽略空格的比较
    5. “-B“:忽略空行的比较

    patch

    1. -pn,表示忽略diff命令中原文件路径中的几层父目录,-p1表示忽略第一个父目录

    补丁文件内容

    1. 第一行,首先指定文件目录路径个比对参数
    2. 第二行,---.....表示原来的文件
    3. 第三行,+++....表示新文件
    4. 第四行一般是被 @@...@@包含的内容,比如@@ -206,8 +206,8 @@: -206表示原来的第206行,8表示总共8行,+206表示这是从新文件的206行,总共也有8行
    5. 文件内容中-表示删除这一行,+表示新增这一行,无+-表示保持原来的

    制作补丁

    使用命令 diff -urN oldFloder NewFloder > mypatch.diff,其中oldFloder为原旧文件,NewFloder为新文件,生成补丁mypatch.diff

    应用补丁

    使用命令patch 来应用补丁

    例子

    1. 在OldFloder存在文件test.txt

      111111
      222222
      333333
      444444
      555555
      
    2. 在NewFloder存在文件test.txt

      111111 add here
      delete 222222 here
      33 change 33
      444444
      555555
      
    3. 为OldFloder创建补丁diff -urN OldFloder NewFloder > test.diff

    4. 查看下补丁的内容cat test.diff

      diff -urN OldFloder/test.txt NewFloder/test.txt
      --- OldFloder/test.txt	2018-09-20 21:15:40.576162357 +0800
      +++ NewFloder/test.txt	2018-09-20 21:17:02.747161577 +0800
      @@ -1,5 +1,5 @@
      -111111
      -222222
      -333333
      +111111 add here
      +delete 222222 here
      +33 change 33
       444444
       555555
      
    5. 应用补丁,patch -p1 < ../test.diff,命令前面的 -p1表示忽略路径中第1个父目录,我们这里是在OldFloder中应用的,所以是p

    6. 查看在OldFloder中的文件cat test.txt,可以发现已经应用成功

      111111 add here
      delete 222222 here
      33 change 33
      444444
      555555
      
    7. 例子解析

      diff -urN OldFloder/test.txt NewFloder/test.txt
      --- OldFloder/test.txt	2018-09-20 21:15:40.576162357 +0800
      +++ NewFloder/test.txt	2018-09-20 21:17:02.747161577 +0800
      @@ -1,5 +1,5 @@
      -111111
      -222222
      -333333
      +111111 add here
      +delete 222222 here
      +33 change 33
       444444
       555555
      
      • @@ -1,5 +1,5 @@表示原来文件的第1行开始,总共有5行,新文件从第1行开始,总共有5行
      • -111111表示删除原文件这一行
      • -222222表示删除原文这一行
      • -333333表示删除原文这一行
      • 后面三个+++....表示新增这一行
      • 接下去的44444455555表示不更改
      • 这么减了三行,去除三行,然后再保留原来的两行444444555555,总共还是5行
  • 相关阅读:
    [CF] Final Exam Arrangement
    [原创]9宫格填数字
    第二次结对编程作业
    第11组 团队展示
    第一次结对编程作业
    第一次个人编程作业
    第一次博客作业
    第二次结对编程作业
    第10组 团队展示
    第一次个人编程作业
  • 原文地址:https://www.cnblogs.com/zongzi10010/p/9683617.html
Copyright © 2011-2022 走看看