diff趣闻

Le Mon 17 February 2025

妹妹你看: - 九十九只幺蛾子,扎在代码堆 - 九十九只幺蛾子,扎在代码堆 - 不抓一只,怎显威名 - 一百二十七只幺蛾子,扎在代码堆

2023年,一架澳大利亚军方的 MRH-90 直升机在例行的海上演习中失去动力坠落,事故原因被认为是直升机未能打上重要软件补丁。

  • https://linux-china-archive.wildberg.icu/p/2023/04/15737.html

在计算机时代的早期,计算机处理器上运行的程序就是打孔纸带。,“补丁” 指使用打孔机的时候,覆盖在打孔纸带上的覆盖纸。这些覆盖纸用来修改程序。

“diff” 是 ”difference“ 的简写。一个补丁是文件之间一系列差异。所以diff等于patch,或者是diff的结果就是patch。

我们用 diff 工具来创建“差异”(或“补丁”),再用该工具将它们 “打” 在一个没有这个补丁的同样的源代码版本上。Unix系统中有这种用途的软件,是同名工具程序diff。

Apache的名字就来自“一系列的代码补丁”(APAtCHy ),它们被一一收集起来并针对原来的 NCSA HTTPd server source code 进行了修订。早期的 Apache 网站的存档中 声称 Apache 的名字就是来自于最早的“补丁”集合;即“ 打了补丁的 APAtCHy ”服务器,简化为 Apache。

将一个软件的生命周期看成是一条时间线的话,就能看见这个软件的点滴变化。在何时源代码加上了一个功能,在何时源代码修复了一个功能缺陷。我们称这些改变的点为“ 提交 commit ”。想检查在一个提交前后的代码变化(或者在许多个提交之间的代码变化)时,都可以使用工具来观察文件差异。

“合并格式 unified ”的补丁是现在软件开发世界里最通用的格式。

三个中横线---显示了原始文件的名字。

任何在原始文件里存在,而在新文件里不存在的行将会用前缀-,用来表示这些行被从源代码里“减去”了。

+++表示:在新文件里被加上的行会被放上前缀 +,表示这是在新文件里被“加上”的行。

补丁文件中的每一个补丁“块”(用 @@ 作为前缀的的部分)都有上下文的行号,这能帮助补丁工具知道在代码的哪里应用这个补丁块。

用 Git 开发软件的话,你可以在你的本地开发环境做些希望交给别的开发者的提交,以添加到他们的源代码树中。为了给别的开发者你的提交,一个方法就是创建一个你本地文件的差异文件,然后将这个“补丁”发送给和你工作在同一个源代码树的别的开发者。别的开发者在“打”了你的补丁之后,就能看到在你的代码变树上的变化。

git diff可用来对本地代码树生成全局差异,或者对任意两次”引用“(可能是一个代表提交的数字,或一个标记或分支的名字,等等)做全局补丁。可以用管道将 git diff 的输出到一个文件里(这个文件必须严格符合将要被使用它的程序的输入要求),然后将这个文件交给一个并不使用 Git 的开发者,以便应用到他的代码上。

参考资料:

Par 纳兰风来, Catégorie : story

Tags :