Gar*_*hby 10 language-agnostic open-source patch
在提交"提交补丁"时,补丁这个词到底意味着什么?
我已经看到这用了很多,特别是在开源世界.这是什么意思以及提交补丁涉及到什么?
Mar*_*iek 18
它是一个文件,其中包含已更改的代码文件之间的差异列表.它通常采用通过对两个文件执行diff -u生成的格式.大多数版本控制系统允许轻松创建补丁,但它通常采用相同的格式.
这允许使用patch命令将代码更改轻松应用于其他人的源代码副本.
例如:
假设我有以下代码:
<?php
$foo = 0;
?>
Run Code Online (Sandbox Code Playgroud)
我把它改成这个:
<?php
$bar = 0;
?>
Run Code Online (Sandbox Code Playgroud)
补丁文件可能如下所示:
Index: test.php
===================================================================
--- test.php (revision 40)
+++ test.php (working copy)
@@ -3,7 +3,7 @@
<?php
- $foo = 0;
+ $bar= 0;
?>
Run Code Online (Sandbox Code Playgroud)
补丁通常是一个文件,其中包含如何更改某些内容的信息(通常是修复错误,但也可能是增强功能)。有不同类型的补丁。
源代码补丁包含需要如何修改一个或多个源代码文件的信息。您可以使用diff命令轻松生成它们,并且可以使用patch命令应用它们(在 Linux/UNIX 系统上,这些命令是标准的)。
然而,也有二进制补丁。二进制补丁包含需要如何更改二进制文件中的某些字节的信息。当然,二进制补丁在开源世界中很少见,但在计算机的早期,我看到它们经常修改已发布的二进制文件(通常是为了解决错误)。
提交补丁意味着您已经在本地修复了某些内容,现在您将文件发送给某人,这样他就可以将此补丁应用到他的本地副本或网络上的公共副本,从而其他用户可以从修复中受益。
如果您有一些几乎可以在某个平台上编译的源代码,但需要进行一些微小的更改才能真正在该平台上进行编译,则也经常使用补丁。当然,您可以获取源代码,对其进行修改并提供修改后的代码以供下载。但是,如果原始来源再次发生变化(例如错误得到修复或添加了小的增强功能)怎么办?然后您必须重新下载源代码,再次应用更改并提供新的修改版本。要使修改后的源代码保持最新需要做很多工作。您无需进行修改,而是在原始副本和修改后的副本之间创建差异并将其存储在服务器上。如果现在用户想要从源代码下载并编译应用程序,他可以首先下载原始源代码的最新和最好的版本,然后应用您的补丁(这样它将编译)并且始终拥有最新版本,而无需您进行更改补丁。仅当原始源在您的补丁修改的地方之一被完全更改时才会出现问题。在这种情况下,系统将拒绝应用该补丁,需要制作新的补丁。