您如何为Drupal核心贡献补丁?


10

向Drupal核心贡献补丁的正确过程是什么?

假设我在Drupal核心中发现了一个错误,对其进行了修复并创建了补丁。我该如何提交?

如果该错误位于Drupal 7中,是否还必须在Drupal 8中对其进行修复并提交两个补丁?这是否也适用于文档错误/改进?

所有补丁都还需要单元测试吗?


3
暂时,我正在寻找答案,假设我已经在drupal.org上拥有一个帐户,知道如何使用git,知道如何检出core,并知道如何创建git补丁。找到好答案后,我们便可以注释或添加答案以概述此过程。
mpdonadio

由于这是对核心维护者在meta.drupal.stackexchange.com/questions/2325上提出的问题的回应,因此将执行该通知。我们需要对过程进行良好的总结,尤其是关于上述问题。链接到其他页面的答案将被拒绝和/或删除。我希望这个问题将成为DA用户发现核心问题时可以参考的资源。
mpdonadio

Answers:


6

如果该错误位于Drupal 7中,是否还必须在Drupal 8中对其进行修复并提交两个补丁?

如果要开发的版本(在本例中为Drupal 8)和先前的版本(Drupal 7)中存在该错误,则应首先修复该错误以修复当前开发的版本,然后再修复先前的版本。

如果该错误在最新开发的版本中不存在,例如,由于该错误是针对已删除或已更改的功能的,则应在当前开发的版本之前为该版本提供补丁。

遵循的工作流程是:

  • 首先,即使仍在开发中,也要为最新版本创建补丁并将其提交以供审核(例如,在Drupal 8的情况下)
  • 将补丁应用于Drupal之后,将创建适用于先前版本的补丁,并提交以供审核。

您可以同时为两个Drupal版本创建补丁,但是由于最新的Drupal版本的补丁可能需要更改,因此,最好使用当前开发版本的补丁,而不要使用两个都需要修改的补丁。被改变。

另请参阅:反向移植政策

这是否也适用于文档错误/改进?

是的,它确实。同样在这种情况下,如果当前开发的版本删除了文档所引用的功能/方法,则需要为先前版本提供补丁。

所有补丁都还需要单元测试吗?

如果该补丁用于文档,则不需要测试。在应用补丁之后,运行在http://qa.drupal.org上的测试bot会检查Drupal代码。如果修补程序引入语法错误(例如,因为注释在需要之前被关闭),则测试bot将在运行测试之前报告有关修补程序的错误。

如果补丁是针对新功能的,则需要进行测试。

如果补丁程序是为了修复错误,那么维护人员可能需要进行测试,如果还没有测试程序可以检查特定功能。为了避免在以后更改相同代码时再次引入相同的错误,通常需要进行测试。如果错误仅是已初始化的变量,但从未在函数/方法中使用过,则可能不需要进行测试。


同一期是否可以包含多个核心版本的补丁?
mpdonadio

1
如果此问题适用于多个版本,则可能包含每个感兴趣版本的补丁程序。
kiamlaluno

总是先提交D8补丁程序,然后再提交D7版本的情况吗?还是在某些情况下同时提交两者是适当的?
mpdonadio

您可以提交两个不同版本的补丁程序,但是最先应用的补丁程序是最新版本的补丁程序。最好先为最新版本创建补丁,因为补丁可能需要更改。
kiamlaluno

3

drupal.org上的每个项目页面的顶部都有一个“版本控制”选项卡。它不仅概述了特定项目的所有代码存储库选项,而且还为项目量身定制了所有git命令示例。您甚至还可以交互式地将其更改为特定版本。

对于Drupal核心,您可以在http://drupal.org/project/drupal/git-instructions上找到该页面

然后,在创建补丁程序后,只需将补丁程序文件附加到一个说明补丁程序作用的问题上即可。

需要指出的两个重要事项是确保补丁以“ .patch”结尾,并将状态设置为“需要审查”。这样测试机器人可以注意到它并自动运行其测试。

新代码始终需要伴随测试

请注意,可以通过项目将其关闭,有些则可以。对于Drupal核心,它是打开的,因此将测试所有补丁。

您可以在http://drupal.org/contribute/development中找到更多信息。


这是一个好的开始。
mpdonadio
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.