补丁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
分享到:
相关推荐
SAP GUI 7.60/760 SAP社区最新补丁PATCH10
mcafee8.5i企业版漏洞补丁目前共有5个,这是第五个。
mcafee8.5i最新补丁patch7
openwrt知识总结 (开发教程+补丁 patch)
这是mcafee最新补丁,由于太大了,所以分2次传,请下载后将它与mcafee补丁patch6.zip(a)合并后安装!
详细解释了如何对linux打升级补丁 patch(diff)命令详解 制作 添加和 步骤实例
android adb 截屏补丁patch~~~~~~~~~~~~~~~~~~~~
SAP GUI 760 补丁Patch7 安装包,需要的自行下载,希望能帮到你们。
传个mcafee补丁patch8,分享一下
AI CS4打开自动关闭补丁Patch下载,直接放到安装软件的目录运行即可,运行前需先关掉Adobe系列软件
j-sim补丁patch1.3-4.tar j-sim补丁patch1.3-4.tar
sap gui 750最新补丁 patch15,2020年gui 750 最新补丁 sap顾问必备 gui750_15-80001468
你最想要的DFT计算软件vasp.5.4.4和最新补丁patch2018.5.16,求之不得的大牛们你们的福利有了,请尽情下载然后在你们的电脑上尽情计算吧!!
mcafee最新补丁,由于它超过了10M,所以请下载后与mcafee补丁patch6.zip(b)合并后在安装!
Microsoft Expression Studio 4 Ultimate(英文版本补丁Patch)覆盖即可
本链接为SAP GUI760/7.60 安装包(2.6G)和最新补丁PATCH10 内有安装说明
Visual.Assist.X.for.Visual.Studio.6.0-2010.v10.6.1837.0 破解 补丁 patch 这只是补丁,程序下载地址: http://www.wholetomato.com/binaries/VA_X_Setup1837.exe
下载的压缩包内提供了原版的安装文件和破解补丁,为了方便各位使用,具体更新列表以及补丁的使用方法参见我的博客(特别是无法破解的朋友,还有不知道如何破解VC2012的朋友,如果发现有破解不了的情况,一定是你们...
WEBLOGIC PSU 补丁 WLS PSU 10.0.3.6.181016 PATCH_ID - GENM Patch number - 28343311
新建windowsphone项目时,提示 未将对象引用设置到对象的实例,应为安装顺序原因,导致的兼容性bug,安装此补丁可以解决。