补丁Patch是天才程序员、Perl的发明者Larry
Wall发明的,它应高效地交流程序源代码之需求而生,随着以Linux为代表的开发源代码运行的蓬勃发展,patch这个概念已经成为开放源代码发起
者、贡献者和参与者的集体无意识的一部分。patch只包含了对源代码修改的部分,这对于开放源代码社区的协同开发模式具有重要意义,意味的软件新版本的
发布和对软件的缺陷或改进可以以更小的文件发布,可以减少网络的传输量,方便软件维护者的管理工作。
patch文件有多种格式,不同平台
上所支持的格式不尽相同,但最常见的是context格式和unified格式。context格式被广泛使用,是patch文件格式事实上的标准。该格
式包含了差异部分及其邻近的若干行,邻近就是所谓的上下文,这些行虽然没有变化,但它们出现在patch文件使得还原patch的程序具备更强的容错性。
unified格式常见于GNU的patch实现,以patch形式发布的linux内核就使用了该格式。此外,还有其它比较少用的格式,如Normal
格式,并排对比模式(side-by-side),ed script和RCS
script模式等。除了并排对比模式方便用户观察文件差异,其它格式大多数是为了兼容旧的patch格式。
patch的工具
patch
有十分丰富的工具,在Unix/Linux系统下diff/patch是最主要的patch命令行工具。另外,一些版本控制软件TortoiseCVS、
Subversion,
WinMerge及集成开发环境如Eclipse包含了patch生成、应用的功能。使用命令行工具生成在Unix/Linux系统下只需要使用diff
命令,在Windows下可以安装Cygwin来模拟Unix环境,当然有时候Cygwin显得过于庞大,此时可以使用unxutils,它是常用的
GNU命令在Windows系统上的移植版,其中包含了diff和patch命令。从http://unxutils.sourceforge.net下
载该软件包后,将其usr\local\wbin目加到Path环境变量即可使用这些命令。
产生补丁
生成patch命令用diff命令,该命令的基本用法是:
diff [选项] 旧文件或目录 新文件或目录
该命令根据选项产生新旧文件或目录之间的patch,并把该patch输出到标准输出上。
选项用来指定输出的patch文件格式,如果比较的是目录是否需要递归,对只在一边目录中存在的文件的处理方法,如何处理空格、制表符、小写等;常用选项有
-c 表示产生context格式的patch
-u 表示产生unified格式的patch
-r 表示对目录进行递归操作,用于产生整个代码树的patch
-N 表示如果文件不存在则将其等价为空文件,这个用于产生有文件增加或删除的patch
接下来,需要指定比较的对象,它们可以是文件,也可以时目录。旧版本列在前面,新版本列在后面。当然,文件或目录也可以从标准输入获得。此时,文件或目录名称用减号"-"表示。实例:
cat build.xml |diff -y -W 100 - build-1.10.xml
以每列100个字符的宽度并排对比输出build.xml和build-1.10.xml之间的差异到屏幕(标准输出)
diff -c web.xml web2.xml > web.xml.diff
产生web2.xml相对于web.xml的修改的上下文格式补丁文件到web.xml.diff中去
diff -crN src src_XFIRE > xfire-patch.diff
产生代码树src_XIRE相对于代码树src的上下文补丁文件到xfire-patch.diff中去,在src_XFIRE中新增的文件的内容也会被包含在补丁中。
打补丁
打补丁可以使用命令行工具patch。它的基本用法是:patch -pnum < 补丁文件。
打
补丁时将工作目录改到需要打补丁源代码顶层目录,然后确定p后面的数字,该数字表示需要去掉的补丁文件中目录的层数,该数字和补丁创建时候工作目录和代码
目录的相对位置有关,一般补丁的作者为在补丁文档中指明。如果没有指定,可以通过观察补丁文件中列出的文件完整路径和代码树中该文件所在相对路径得出。
例子:
cd src
patch -p1 < xfire-patch.diff
分享到:
相关推荐
这款软件的第五个补丁,即 "mcafee8.5i 补丁patch5",是针对 McAfee 8.5i 企业版的重要更新,旨在解决软件存在的安全漏洞和性能问题。 补丁(Patch)在IT行业中通常指的是修复软件错误或提升性能的小型程序。在...
SAP GUI 7.60/760 SAP社区最新补丁PATCH10
Linux 打补丁 Patch 详解 Linux 打补丁 Patch 是一种常用的方法来升级 Linux 内核版本。下面是关于 Linux 打补丁 Patch 的详细解释。 什么是补丁? ---------------- 补丁是一个文本文档,包含了在两个不同版本的...
这个版本是760系列中的一个重要更新,特别是补丁Patch7,它旨在提高软件的性能、稳定性和安全性。在本文中,我们将深入探讨SAP GUI 760及其补丁Patch7的关键特性、安装过程以及它们对用户的影响。 首先,SAP GUI是...
此“android adb 截屏补丁patch”似乎是一个针对ADB功能扩展的补丁,旨在增强其截图能力。让我们深入探讨ADB的基本功能以及这个补丁可能涉及的细节。 首先,ADB是Android SDK的一部分,它提供了三种主要命令行工具...
mcafee8.5i最新补丁patch7
OpenWRT知识总结(开发教程+补丁patch) OpenWRT是一款基于Linux的路由器操作系统,旨在提供一个高度可定制和灵活的解决方案,满足不同用户的需求。本文档旨在总结OpenWRT的开发教程和补丁patch,帮助开发者和用户...
【标题】"WEBLOGIC PSU 补丁 PATCH_ID - GENM Patch number - 28343311" 指的是Oracle WebLogic Server(WLS)的Patch Set Update(PSU)补丁,其补丁编号为28343311。这个补丁属于GENM系列,它是一个综合性的更新,...
【McAfee补丁patch6.zip(a)与patch6.zip(b)详解】 McAfee是一家全球知名的计算机安全软件公司,其产品线广泛,包括反病毒、防火墙、间谍软件清除、恶意软件防护等。补丁是软件更新的一种形式,用于修复程序中的漏洞...
《j-sim补丁patch1.3-4.tar——深入解析与应用》 "j-sim补丁patch1.3-4.tar" 是一个针对j-sim软件的更新补丁,用于修正或增强该模拟器的功能。补丁是软件开发过程中不可或缺的一部分,它通常包含了对原有软件代码的...
SAP GUI 7.6版补丁patch 8是一个关键的更新,专为解决SAP图形用户界面(GUI)760版本中的特定问题而设计。这个补丁的发布是为了增强软件的稳定性和性能,特别是在处理搜索帮助功能和输入文本时的用户体验。以下是...
这是mcafee最新补丁,由于太大了,所以分2次传,请下载后将它与mcafee补丁patch6.zip(a)合并后安装!
传个mcafee补丁patch8,分享一下
AI CS4打开自动关闭补丁Patch下载,直接放到安装软件的目录运行即可,运行前需先关掉Adobe系列软件
这个英文版本的补丁Patch旨在解决原软件可能存在的问题,提高程序的稳定性和性能,同时也可能包含了新功能的添加或现有功能的改进。 **补丁应用过程**: 1. 在安装了Microsoft Expression Studio 4 Ultimate的...
标题中的"掉卡补丁PATCH FOR KS20 V10C.zip"指的是针对KS20设备的一个特定问题——“掉卡”现象的修复程序。在IT领域,"掉卡"通常意味着设备(如手机或某种电子设备)频繁地失去网络连接,可能是由于硬件故障、软件...
sap gui 750最新补丁 patch15,2020年gui 750 最新补丁 sap顾问必备 gui750_15-80001468
【HealthApp(20210101更新,注明仅仅供参考学习)-------补丁 patch】 这个标题表明我们正在处理一个针对HealthApp的补丁更新,日期为2021年1月1日。补丁是软件开发中的一个重要概念,通常用于修复程序中的错误、...
用户需要将补丁应用到已经安装的VASP5.4.4源代码上,这通常通过`patch`命令完成,例如:`patch -p1 < patch.5.4.4.16052018.gz`。补丁会根据其内部指示修改源代码的特定部分。 在使用这些文件时,用户应确保他们...
本链接为SAP GUI760/7.60 安装包(2.6G)和最新补丁PATCH10 内有安装说明