`
yangzb
  • 浏览: 3470842 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

diff和patch十分钟指南

    博客分类:
  • QC
阅读更多

情景一:你正尝试从代码编译一个软件包,发现有人已经对代码进行了小小的修改以便在你的系统上编译。他们通过补丁的方式发布自己的成果,但是你却不知道该如何使用它。答案是你使用一个叫做patch(很贴切)的命令行工具将补丁应用到原始代码上。

情景二:你下载了一个开源软件包的代码,花了一个小时左右稍作修改,成功的让它在你的系统上编译通过。你想把自己的成果分享给其他程序员,或者给软件包的作者。现在你就需要创建自己的补丁,你需要的工具是diff。

这是一份diff和patch的快速指南,通过讲解它们最常见的用法来帮你解决上面问题。它告诉你的东西足够让你立刻开始使用。之后,你可以在闲暇的时候用manpage来学习diff和patch的前前后后。我总是乐意听到你们的问题和意见。用联系表单跟我取得联系。

用patch命令应用补丁

要对单个文件应用补丁,进入文件所在的目录并调用patch命令:

patch < foo.patch

这些命令假定补丁是以统一格式分发的,这种格式指明了补丁要应用到的文件。如果不是,你可以在命令行里指定文件:

patch foo.txt < bar.patch

应用补丁到整个目录(这种情况也许更常见)也是类似的,但是你必须注意设置p级别。就是说,在补丁文件里,需要打补丁的文件在你电脑上的路径名跟 在创建补丁的电脑上可能不同。p级别告诉patch命令忽略掉路径名的几个部分以正确的识别文件。通常p级别为1就够了,所以你使用:

patch -p1 < bar.patch

运行该命令之前,你应该进入源代码目录的顶层目录。如果补丁级别1不能正确识别任何需要打补丁的文件,检查补丁文件里的文件名。如果你看到这样一个文件名:

/users/stephen/package/src/net/http.c

而你当前正工作在一个包含net/http.c的目录,使用:

patch -p5 < bar.patch

总的来说,对于从路径最开始删除的每个路径分隔符(斜线字符)加一,直到剩下的部分存在于你的工作目录中。最后得到的就是p级别。

要删除补丁,用-R参数,例如:

patch -p5 -R bar.patch

使用diff创建补丁

不论是对于单个文件还是整个源码目录,使用diff都很简单。为单个文件创建补丁,用下面形式:

diff -u original.c new.c > original.patch

为整个源码树创建补丁,复制一份源码树:

cp -R original new

在目录new/里进行必要的修改,然后用下面的命令创建补丁:

diff -rupN original/ new/ > original.patch

这就是diff和patch入门需要的所有知识。要获得更多的信息用:

man diff
man patch

分享到:
评论

相关推荐

    windows可用的diff和patch

    windows可用的diff和patch可执行文件,用于比较文件、生成补丁和应用补丁。用于一键给多个源文件加指定代码。比如应用systemview时需要对FreeRTOS进行的很多更改,参见...

    diff和patch说明

    NULL 博文链接:https://chuqq.iteye.com/blog/481803

    如何使用diff和patch

    1) 在数学上来说:diff/patch,diff是对2个集合求差,patch是求和  diff A B &gt;C ,一般A是原始文件,B是修改后的文件,C称为A的补丁文件。  patch A C 就能得到B, 这一步叫做对A打上了B的名字为C的补丁。  patch ...

    Python-DiffMatchPatch是一种处理纯文本的多种语言高性能库

    Diff Match Patch是一种处理纯文本的多种语言高性能库

    diff_match_patch库

    diff_match_patch java资源库,方便文件之间求差异,和根据差异推算出新的文件,主要用于增量更新

    google-diff-match-patch比较文件 demo

    要对文本文件的进行比较的时候,可以考虑使用google-diff-match-patch,它可以进行比较、匹配和生成补丁的操作 google-diff-match-patch这个类库提供了强大的算法用于纯文本内容的差异比较,匹配,打补丁,实现...

    diff_match_patch

    google-diff_match_patch:Java版本补丁包库文件

    linux diff & patch

    关于Linux diff & patch的资料,想深入了解diff的童鞋可以收藏下

    shell常用命令—diff和patch

    shell常用命令—diff和patch1. diff用法2. diff比较目录3. patch用法 1. diff用法 diff file1 fil2 以后面的文件file2作为标准 比较file1相对于file2来说有什么不同 &lt; 表示第一个文件中的内容 &gt; 表示第二个文件...

    diff-match-patch 各平台源码

    diff-match-patch 各平台源码 ,csharp,java,maven, python2, python3,javascript objectivec,cpp,lua

    Shell编程中的常用命令diff和patch

    Shell编程中的常用命令diff和patch diff和patch命令 diff通常比较文件的内容(产生补丁文件),patch常用来打补丁 &lt;表示第一个文件中的内容 &gt;表示第二个文件中的内容   diff -u diff -r #比较目录 diff通常比较...

    嵌入式系统/ARM技术中的如何使用diff和patch

    1) 在数学上来说:diff/patch,diff是对2个集合求差,patch是求和  diff A B &gt;C ,一般A是原始文件,B是修改后的文件,C称为A的补丁文件。  patch A C 就能得到B, 这一步叫做对A打上了B的名字为C的补丁。  patch ...

    armboot-org2mini2440.diff patch补丁包

    补丁方法:将原始的armboot程序包armboot-1.1.0.tgz 解开后,将armboot-org2mini2440.diff文件放到和armboot-1.1.0的同级目录上,不要拷贝到 armboot-1.1.0 目录里面, 进到 armboot-1.1.0 执行如下的patch命令即可...

    diff-match-patch-master.zip

    diff-match-patch

    数据状态更新时的差异 diff 及 patch 机制(1).md

    数据状态更新时的差异 diff 及 patch 机制(1)

    prh_google_diff_match_patch.zip

    使用google-diff-match-patch比较文件 要对文本文件的进行比较的时候,可以考虑使用google-diff-match-patch,它可以进行比较、匹配和生成补丁的操作。

    qemu-patch.diff

    install parsec3.0 for gem5 on arm architecture. qemu-patch.diff

    shell中常用的命令之diff和patch用法

    主要介绍了shell中常用的命令:diff和patch,在这里diff是比较文件内容,patch是打补丁的,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics