今天上QQ的时候发现eva不能用了,后来又看到了解决方法,所以想打个补丁,不过不会:-)。后来查了查明白了,写了个总结,分享一下,也不知道以前有 没有这方面的东西,希望我这个不是多余的。

创建补丁文件:

代码:
diff -Naur 旧的目录 新的目录 > patch文件
或者
diff -Naur 旧的文件 新的文件 > patch文件

对于目录层数的一些限制

在创建patch的时候文件夹的层数应当是一样的,比如

代码:
--- old/modules/pcitableMon Sep 27 11:03:56 1999
+++ new/modules/pcitableTue Dec 19 20:05:41 2000

这样是可以的。

代码:
--- old/try1/other/modules/pcitableMon Sep 27 11:03:56 1999
+++ new/modules/pcitableTue Dec 19 20:05:41 2000

这样做可能会有一些问题。

如何使用patch
对于一个patch文件,有两种常用使用方法:
1.

代码:
cat new-patch | patch -p0

2.

代码:
patch -p0 < new-patch

patch命令里面的层数(-p0?-p1?)
参数-p来指定从第几层开始比较。比如有一个patch文件的补丁头是这样的:

代码:
--- old/modules/pcitableMon Sep 27 11:03:56 1999
+++ new/modules/pcitableTue Dec 19 20:05:41 2000

如果使用参数-p0,就表示从当前目录,找一个叫作new的目录,在它下面找一个叫modules的目录,再在它下面找一个叫 pcitableMon的目录。
如果使用参数-p1,就表示忽略第一层,从当前目录找一个叫modules的目录,在它下面找一个叫modules的目录。这样会忽略掉补丁头提到的 new目录。
依此类推。

patch文件的结构
补丁头
补丁头是分别由---/+++开头的两行,用来表示要打补丁的文件。
一个补丁文件中的多个补丁
一个补丁文件中可能包含以---/+++开头的很多节,每一节用来打一个补丁。所以在一个补丁文件中可以包含好多个补丁。

块是补丁中要修改的地方。它通常由一部分不用修改的东西开始和结束。他们只是用来表示要修改的位置。他们通常以@@开始,结束于另一个块的开始或者一个新 的补丁头。
块的缩进
块会缩进一列,而这一列是用来表示这一行是要增加还是要删除的。
块的第一列
+号表示这一行是要加上的。
-号表示这一行是要删除的。
没有加号也没有减号表示这里只是引用的而不需要修改。

一个patch的例子

代码:
diff -u old/modules/pcitable new/modules/pcitable
--- old/modules/pcitableMon Sep 27 11:03:56 1999
+++ new/modules/pcitableTue Dec 19 20:05:41 2000
@@ -1,4 +1,6 @@
0x0e110xae10"cpqarray""Compaq|Smart-2/P RAID Controller"
+0x10000x0010"cpqarray""Compaq|Integrated Array Controller"
+0x10110x0046"cpqarray""Compaq|Smart-2/P RAID Controller"
0x0e110xae32"tlan""Compaq|Netelligent 10/100"
0x0e110xae34"tlan""Compaq|Netelligent 10"
0x0e110xae35"tlan""Compaq|Integrated NetFlex-3/P"
@@ -21,6 +23,7 @@
0x10000x000f"ncr53c8xx""Symbios|53c875"
0x10000x0012"ncr53c8xx""Symbios|53c895a"
0x10000x008f"ncr53c8xx""Symbios|53c875J"
+0x10000x000a"sym53c8xx""Symbios|53c1510"
0x10000x0701"yellowfin""Symbios|83C885 gigabit ethernet"
0x10000x0702"yellowfin""Symbios|Yellowfin G-NIC gigabit ethernet"
0x10110x0001"tulip""DEC|DECchip 21050"
--- old/usr/share/kudzu/pcitableSun Sep 26 17:11:23 1999
+++ new/usr/share/kudzu/pcitableTue Dec 19 20:05:41 2000
@@ -15,6 +15,8 @@
0x0e110x3034"unknown""Compaq|QVision 1280/p"
0x0e110x4000"unknown""Compaq|4000 [Triflex]"
0x0e110xa0f3"ignore""Compaq|Triflex PCI to ISA Bridge"
+0x10000x0010"cpqarray""Compaq|Integrated Array Controller"
+0x10110x0046"cpqarray""Compaq|Smart-2/P RAID Controller"
0x0e110xae10"cpqarray""Compaq|Smart-2/P RAID Controller"
0x0e110xae29"unknown""Compaq|MIS-L"
0x0e110xae2a"unknown""Compaq|MPC"
@@ -46,6 +48,7 @@
0x10000x000f"ncr53c8xx""Symbios|53c875"
0x10000x0012"ncr53c8xx""Symbios|53c895a"
0x10000x008f"ncr53c8xx""Symbios|53c875J"
+0x10000x000a"sym53c8xx""Symbios|53c1510"
0x10000x0701"yellowfin""Symbios|83C885 gigabit ethernet"
0x10000x0702"yellowfin""Symbios|Yellowfin G-NIC gigabit ethernet"
0x10000x0901"unknown""Symbios|61C102"

分析
这个例子是由命令

代码:
diff -u old/modules/pcitable new/modules/pcitable

创建的。不过最好是用命令diff -Naur来代替diff -u。
它修改了两个文件,new/modules/pcitable和new/usr/share/kudzu/pcitable。
第一个补丁头包含两个块,分别增加了两行和一行。
转自http://www.linuxsir.org/bbs/showthread.php?t=240802

转载于:https://www.cnblogs.com/sdphome/archive/2011/10/11/2206849.html

【转贴】使用和制作patch文件相关推荐

  1. 使用和制作patch文件

    使用和制作patch文件 发表时间: 2007-2-13 20:57    作者: superuser    来源: 迷茫人 字体: 小 中 大 | 打印 原文http://www.linuxsir. ...

  2. linux内核patch文件夹,如何制作patch文件及如何打patch 附带linux打补丁命令

    对某个版本的Linux内核做了修改以后,如果希望发布出去给别人用,那么就需要制作针对此版本的patch文件.比如基于Linux-2.6.25内核 做了修改,修改后的内容放在文件夹Linux-2.6.2 ...

  3. patch文件格式 patch文件的结构 使用和制作patch文件

    创建补丁文件: 代码: diff -Naur 旧的目录 新的目录 > patch文件 或者 diff -Naur 旧的文件 新的文件 > patch文件 对于目录层数的一些限制 在创建pa ...

  4. 如何制作patch文件?

    1.在编译服务器的任意目录下,例如myCode目录下新建两个文件夹,命名为before和after,将修改前后的文件分别放入before和after文件夹下,在myCode目录下执行命令diff -N ...

  5. 如何制作LINUX的patch文件及如何打patch

    如何制作LINUX的patch文件及如何打patch 对某个版本的Linux内核做了修改以后,如果希望发布出去给别人用,那么就需要制作针对此版本的patch文件. patch文件也叫补丁,就是一个文本 ...

  6. u-boot的patch文件制作

    首先明白为什么要制作patch文件,因为u-boot的移植过程需要根据实际需要修改通用u-boot,如果每次手工修改的话,太麻烦,所以用了patch文件一步到位,这点类似于makefile的作用,哈哈 ...

  7. patch文件介绍和生成方法

    Git 打补丁-- patch 和 diff 的使用(详细) git diff和diff产生的文件简介 git patch制作相关简介 git format-patch 用法 如果要修改的patch当 ...

  8. <Linux>使用quilt工具制作补丁(patch)文件

    Linux使用quilt工具制作补丁文件 前言 一.安装quilt工具 二.一个需要被打补丁的文件 三.quilt new命令创建初始补丁文件 四.quilt add命令添加目标文件 五.修改目标文件 ...

  9. android cpp做成so库,Android增量更新(二)—制作合成文件so库

    ###前言 在上节中,我们已经学习了`Android增量更新`的实现原理,那么在Android开发的移动端,我们需要涉及到的其实是`文件合成`的这个流程. 那么,今天就来讲讲增量更新合成流程的实现吧. ...

最新文章

  1. Go 分布式学习利器(14)-- Go语言的错误处理
  2. 机器人3D互动展品开发计划——飞拍视觉伺服
  3. LeetCode 929 Unique Email Addresses--python一行解法,Java解法
  4. logback:用slf4j+logback实现多功能日志解决方案
  5. oracle中forall in,oracle10g的forall功能加强
  6. 【SICP练习】101 练习2.77-2.78
  7. Visual Studio.Net 快捷键表
  8. Redis入门之二6379端口
  9. HBase模式设计之ID顺序增长(rowkey顺序增长)
  10. c语言fin和fout用法,fin,fout提示第一次调用
  11. WAS集群系列(3):集群搭建:步骤1:准备文件
  12. 列举微型计算机的主要性能指标,计算机基础考试纲.ppt
  13. linux非root用户添加rzsz,linux RZSZ RZSZ 安装
  14. 大数据平台有哪些基础服务
  15. 入职5年前端工程师针对web前端小白,作出的职业规划建议
  16. Intel 12代处理器主机 安装Ubuntu
  17. 毕马威《2021年中国证券业调查报告》:金融科技和数字化将成为发展核心
  18. 深度学习--卷积神经网络
  19. Android集成友盟推送最详细介绍
  20. Hdoj 2190.悼念512汶川大地震遇难同胞——重建希望小学 题解

热门文章

  1. 日志打印工具类LogUtils
  2. CentOS6.5 安装并配置vsftpd
  3. 设置PDF文件默认缩放比例
  4. spring mvc 中自定义404页面在IE中无法显示favicon.ico问题的解决方法。
  5. 树形控件显示数据库数据项
  6. liunx安装Lamp
  7. APC UPS 网络管理卡(型号apc ap9631)的配置
  8. ASP.NET2.0服务器控件之自定义状态管理
  9. 矩阵奇异值分解(SVD)
  10. Leecode 入门--单链表-- 递归操作