当你报告一个问题时,或者当你修复bug时,你会听到“测试这个补丁”,“制作一个补丁”这样的话。那么,补丁究竟是什么呢?
补丁是一个文件,它指明具体要更改哪些文件中的哪些行。
以下是一个来自问题11354的近期补丁,它修正了一个简单的打字错误。
仔细观察,我们可以看到补丁总是以相对于Joomla!根目录的更改文件名开始。在这个例子中,它是plugins/authenticaion文件夹中的gmail.php文件。
接下来,我们再次看到文件名被列出。第一行的数字代表创建补丁时的代码库版本或构建。工作副本是发生更改的副本。我说的构建是什么意思?每次代码库发生变化时,都会创建一个新的修订版或构建。你可以在Joomla!根目录下的changelog.php文件中找到构建号。
接下来是 @@ -87,7 +87,7 @@,它告诉我们更改将从文件的第87行开始。
最后,我们看到了代码。旧的第87行前面有一个减号,而新的第87行前面有一个加号。
文件的旧版本将被新版本替换。
当然,大多数补丁远比这个复杂,但它们实际上只是这种结构的重复实例。
所以如果你看到了这个补丁文件并想要修复你的Joomla!版本,你所需要做的就是找到gmail.php文件的第87行并做出相应的修改。所以如果有人告诉你“追踪器上有补丁”,他们的意思是你可以下载这个补丁并应用到你的Joomla!版本上。但是需要记住的一件事是,如果你的版本与代码库中的版本不匹配,那么这个补丁可能无法工作,因为它可能依赖于或者影响到代码的其他部分。
现在,如果你要贡献一个修复 而不是仅仅报告一个问题,理想的做法是提交一个你已经测试过的补丁文件。然而,如果你做不到这一点,至少提供以下信息
- 任何更改的文件的完整名称和路径
- 更改的行号
- 更改行的旧版本和新版本
然而,制作补丁文件更好,如果你安装了如Tortoise或Eclipse的Subclipse插件这样的子版本客户端,这并不复杂。