patch补丁使用方法 patch补丁怎么用


patch补丁使用方法 patch补丁怎么用

文章插图
编译自:
https://opensource.com/article/18/8/diffs-patches
作者: Phil Estes
译者: DavidChenLiang
这篇文章介绍 差异文件(diff)和 补丁文件(patch),以及它们如何在开源项目中使用的例子 。
如果你曾有机会在一个使用分布式开发模型的大型代码库上工作过,你就应该听说过类似下面的话,“Sue 刚发过来一个 补丁(patch)”,“Rajiv 正在 签出(checking out) 差异(diff)”, 可能这些词(补丁、差异文件)对你而言很陌生,而你确定很想搞懂他们到底指什么 。开源软件对上述提到的名词有很大的贡献,作为大型项目从 Apache web 服务器到 Linux 内核的开发模型,“基于补丁文件的开发” 这一模式贯穿了上述项目的始终 。实际上,你可能不知道 Apache 的名字就来自“一系列的代码补丁”(LCTT 译注:Apache 英文发音和补丁的英文 patch 相似),它们被一一收集起来并针对原来的 NCSA HTTPd server source code 进行了修订 。
你可能认为这只不过是些逸闻,但是一份早期的 Apache 网站的存档中 声称 Apache 的名字就是来自于最早的“补丁”集合;即“ 打了补丁的(APAtCHy)”服务器,简化为 Apache 。
好了,言归正传,程序员嘴里说的“差异”和“补丁”到底是什么?
首先,在这篇文章里,我们可以认为这两个术语都指向同一个概念 。“diff” 是 ”difference“ 的简写;Unix 下的同名工具程序 diff剖析了一个或多个文件之间的“差异” 。下面我们会看到 diff 的例子:
一个“补丁”指的是文件之间一系列差异,这些差异能被 Unix 的 diff 程序应用在源代码树上 。我们能使用 diff 工具来创建“差异”(或“补丁”),然后使用该工具将它们 “打” 在一个没有这个补丁的同样的源代码版本上 。此外,(我又要开始跑题说些历史轶事了……),“补丁” 这个词真的指在计算机的早期使用打卡机的时候,用来覆盖在打孔纸带上来对软件进行修改的覆盖纸,那个时代打孔纸带就是在计算机处理器上运行的程序 。下面来自 维基页面 的这张图真切的描绘了最初的“打补丁”这个词的出处:
现在你对补丁和差异就了一个基本的概念,让我们来看看软件开发者是怎么使用这些工具的 。如果你还没有使用过类似于 Git 或 subversion 这样的源代码版本控制工具的话,我将会一步步展示最流行的软件项目是怎么使用它们的 。如果你将一个软件的生命周期看成是一条时间线的话,你就能看见这个软件的点滴变化,比如在何时源代码加上了一个功能,在何时源代码修复了一个功能缺陷 。我们称这些改变的点为“ 提交(commit)”,“提交”这个词被当今最流行的源代码版本管理工具 Git 所使用,当你想检查在一个提交前后的代码变化的话,(或者在许多个提交之间的代码变化),你都可以使用工具来观察文件差异 。
如果你同样在使用 Git 开发软件的话,你可以在你的本地开发环境做些希望交给别的开发者的提交,以添加到他们的源代码树中 。为了给别的开发者你的提交,一个方法就是创建一个你本地文件的差异文件,然后将这个“补丁”发送给和你工作在同一个源代码树的别的开发者 。别的开发者在“打”了你的补丁之后,就能看到在你的代码变树上的变化 。
Linux、Git 和 GitHub这种分享补丁的开发模型正是现今 Linux 内核社区如何处理内核修改提议而采用的模型 。如果你有机会浏览任何一个主流的 Linux 内核邮件列表 —— 主要是 LKML,也包括 linux-containers 、 fs-devel 、 Netdev 等等,你能看到很多开发者会贴出他们想让其他内核开发者审核、测试或者合入 Linux 官方 Git 代码树某个位置的补丁 。当然,讨论 Git 不在这篇文章范围之内(Git 是由 Linus Torvalds 开发的源代码控制系统,它支持分布式开发模型以及允许独立于主要代码仓库的补丁包,这些补丁包能被推送或拉取到不同的源代码树上,并遵守这些代码树各自的开发流程 。)


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: