在提及“提交补丁”时,Patch这个词到底意味着什么?

时间:2008-10-08 18:49:52

标签: language-agnostic open-source patch

在提及“提交补丁”时,补丁一词究竟是什么意思?

我已经看到这个用了很多,特别是在开源世界。什么是什么意思以及提交补丁涉及到什么?

10 个答案:

答案 0 :(得分:18)

这是一个文件,其中包含已更改的代码文件之间的差异列表。它通常采用在两个文件上执行 diff -u 生成的格式。大多数版本控制系统允许轻松创建补丁,但它通常采用相同的格式。

这允许使用 patch 命令将代码更改轻松应用于其他人的源代码副本。

例如:

假设我有以下代码:

<?php
  $foo = 0;
?>

我将其更改为:

<?php
  $bar = 0;
?>

补丁文件可能如下所示:

Index: test.php
===================================================================
--- test.php    (revision 40)
+++ test.php    (working copy)
@@ -3,7 +3,7 @@
         <?php
-            $foo = 0;
+            $bar= 0;
         ?>

答案 1 :(得分:6)

Red Hat的开发人员Richard Jones已经a nice little primer向开源项目提交代码,其中包括制作和提交补丁。

答案 2 :(得分:4)

补丁通常是一个文件,其中包含如何更改某些内容的信息(通常用于修复错误,但也可能是一项增强功能)。有不同类型的补丁。

源代码补丁包含有关如何修改一个或多个源代码文件的信息。您可以使用 diff 命令轻松生成它们,并且可以使用 patch 命令应用它们(在Linux / UNIX系统上,这些命令是标准的)。

但是,也有二进制补丁。二进制补丁包含有关如何更改二进制文件中某些字节的信息。当然,二进制补丁在OpenSource世界中很少见,但在计算机的早期我看到了很多修改已发布的二进制文件(通常是为了解决bug)。

提交补丁意味着您已在本地修复了某些内容,现在您将文件发送给某人,因此他可以将此补丁应用于其本地副本或Web上的公共副本,因此其他用户可以从此修复中受益。 / p>

如果你有一些几乎在某个平台上编译的源代码,也会经常使用补丁,但是需要进行一些微小的更改才能真正编译它。当然,您可以获取源代码,修改它并提供修改后的代码供下载。但是,如果原始源再次发生变化(例如,错误得到修复或添加了小的增强功能)会怎样?然后,您必须重新下载源,再次应用更改并提供新的修改版本。要使修改后的源代码保持最新,需要做很多工作。您可以在原始副本和修改后的副本之间创建 diff ,而不是修改,并将其存储在服务器上。如果现在用户想要从源代码下载和编译应用程序,他可以先下载最新的&amp;原始源的最佳版本,然后应用您的补丁(因此它将编译)并始终具有最新版本,而无需您更改补丁。只有在修补程序修改的其中一个位置更改了原始源时,才会出现问题。在这种情况下,系统将拒绝应用补丁,并且需要制作新补丁。

答案 3 :(得分:1)

补丁是一个文件,其中包含将维护者的源树转换为您自己的所有必要信息。它通常由diffsvn diffgit format-patch等工具创建。

传统上,开源项目接受来自普通商店的补丁形式的提交,因此他们不必让其他人提交对其存储库的访问权。

答案 4 :(得分:1)

一个补丁,通常是.patch文件的形式,是一种常见的平面文件格式,用于传输两组代码文件之间的差异。因此,如果您正在开发一个开源项目,并对文件进行代码更改,并希望将其提交给项目所有者进行检入(通常是因为您没有签入权),您可以通过补丁来实现

WinMerge内置了此功能,TortoiseSVN等许多其他工具也是如此。

答案 5 :(得分:1)

补丁文件表示您修改的现有源和源之间的差异。它是在许多项目中添加功能或修复错误的主要方法。

使用diff命令创建补丁(例如)。

然后,您可以将此修补程序提交到开发邮件列表,如果收到的很好,那么提交者将应用该修补程序(从而自动应用您的更改)并提交代码。

使用patch命令应用补丁。

答案 6 :(得分:1)

通常,它意味着提交一个统一的diff文件,其中包含一个功能的聚合变更集。你可以read more about patches on Wikipedia。多个版本控制系统(svn,git等)将根据变更集为您创建补丁文件。

答案 7 :(得分:1)

 1. n. A temporary addition to a piece of code, usually as a quick-and-dirty

补救现有的错误或错误。补丁可能有效也可能无效,可能有也可能没有 最终永久纳入该计划。区别于差异 或者通过比其他方式更原始的方式生成补丁的事实来修改 该计划;经典的例子是使用前面修改的指令 面板开关,以及直接对程序的二进制可执行文件所做的更改 最初用HLL写的。比较一行修复。

请参阅行话文件here

中的整个定义

答案 8 :(得分:1)

Patch也用于更新系统二进制文件。 Microsoft始终发送补丁,但它们不是源代码。它们是安装改进二进制文件的.msp文件。与所有计算机科学术语一样,补丁过载。

答案 9 :(得分:0)

我一直认为这个术语意味着修复错误,就像妈妈常常穿上你的破洞牛仔裤一样。