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行
  • 相关阅读:
    ansible使用sudo
    shell中命令作为变量使用
    for循环使用
    移动多个文件
    获取ip
    if、elif 条件判断
    python安装二进制k8s 1.11.0 一个master、一个node 查看node节点是主机名---apiserver无法启动,后来改了脚本应该可以
    (转)《黑客帝国完全解析》
    关于敏捷开发方法(Agile Software Development)的阅读笔记
    关于软件工程结对编程作业 PairProject : Elevator Scheduler(电梯调度算法的实现与测试)的总结
  • 原文地址:https://www.cnblogs.com/zongzi10010/p/9683617.html
Copyright © 2011-2022 走看看