提出变革

5.3版本
欧宝娱乐app下载地址symfony 5.3支持乔利德

提出变革

拉出请求,“Pr”短,是提供错误修复的最佳方式,或者提出对symfony的增强功能。欧宝娱乐app下载地址

第1步:检查现有问题并提取请求

在进行更改之前,检查其他人是否也提出了该主题,也可以甚至开始在PR上工作在Github上寻找

如果您不确定或在整个过程中有任何疑问,请询问您的问题#contrib频道欧宝娱乐app下载地址Symfony Slack.

第2步:设置您的环境

安装软件堆栈

在Symfony上工作之前,使用以下欧宝娱乐app下载地址软件设置友好的环境:

  • git;
  • PHP版本7.2.5或以上。

配置Git.

使用您的真实姓名和工作电子邮件地址设置用户信息:

1 2
$git config  -  global user.name“你的名字”$git config  -  global user.email[电子邮件受保护]

提示

如果您是Git的新手,强烈建议您阅读优秀和自由山顶书。

提示

如果您的IDE在项目目录中创建配置文件,则可以使用全局.gitignore.文件(对于所有项目)或.git /信息/排除文件(每个项目)忽略它们。看github的文件欧宝体育电话

提示

Windows用户:安装Git时,安装程​​序将询问如何处理Line Endings,并建议使用CRLF替换所有LF。如果您希望为Symfony贡献,这是错误的设置!欧宝娱乐app下载地址选择AS-IS方法是您的最佳选择,因为GIT会将您的行源转换为存储库中的线路。如果已安装Git,则可以通过键入来检查此设置的值:

1
$git confim core.autocrf.

这将返回“假”,“输入”或“真实”;“真实”和“假”是错误的值。通过键入将其更改为“输入”:

1
$git config  -  global core.autocrlf输入

如果要仅为活动存储库设置它,则通过-local替换-global

获取symfon欧宝娱乐app下载地址y源代码

获取symfon欧宝娱乐app下载地址y源代码:

1
$git clone.[电子邮件受保护]:用户名/ symf欧宝娱乐app下载地址ony.git
  • 将上游存储库添加为遥控器:
1 2
$光盘欧宝娱乐app下载地址$git远程添加上游git://github.com/symfony/symfony欧宝娱乐app下载地址.git

检查当前的测试通过

现在已安装Symf欧宝娱乐app下载地址ony,请检查所有单元测试是否为您的环境传递,如专用文档

提示

如果测试失败,请检查Travis-CI.如果同样的测试也在那里失败。在这种情况下,您不需要关注在本地失败的测试。

第3步:在拉索请求上工作

许可证

在开始之前,您应该意识到您要提交的所有代码必须释放麻省理工学院执照

选择正确的分支

在PR工作之前,必须确定您需要工作的分支:

  • 4.4,如果您修复了现有功能的错误,或者想要更改落入的更改补丁版本可接受的更改列表(如果在以后的版本中介绍了您要修复的功能),则可能必须选择更高的分支机构);

  • 5.x.,如果您添加了一个新功能。

    唯一的例外是新的主要symf欧宝娱乐app下载地址ony版本(5.0,6.0等)每两年出来。因为特殊开发过程在那些版本中,您需要使用以前的次要版本进行特征(例如,使用4.4代替5.0, 用5.4代替6.0等)

笔记

合并到维护分支机构的所有错误修复也定期合并为更新的分支机构。例如,如果您提交PR4.4分支机构,PR也将由核心团队应用于5.x.分支。

创建一个主题分支

每次要在PR上为错误或增强工作时,都会创建一个主题分支:

1
$git checkout -b branch_name5.。X

或者,如果您想为此提供错误修复4.4分支,首先跟踪遥控器4.4分支在本地:

1
$git checkout --track origin / 4.4

然后从中创建一个新的分支4.4分支用于解决错误修复:

1
$git checkout -b branch_name4..4

提示

使用分支的描述性名称(ticket_xxx.在哪里XXX.机票号是错误修复的良好公约。

上面的签入命令自动将代码切换到新创建的分支(检查您正在处理的分支Git.分支)。

在现有项目中使用您的分支

如果要在使用的现有项目中测试您的代码欧宝娱乐app下载地址symfony / symfony.或sy欧宝娱乐app下载地址mfony组件,您可以使用关联在您以前克隆的Git存储库中提供的实用程序。这个工具扫描了小贩/项目的目录,查找它使用的symfony软件包,并通过符号链接替换为欧宝娱乐app下载地址git存储库中的链接。

1
$PHP链接/路径/到/您/项目

在运行之前关联命令,确保通过运行安装您要调试的项目的依赖关系作曲家安装在它的内部。

提示

如果由于DEV环境无法在项目中解析到您当地symfo欧宝娱乐app下载地址ny叉子的符号链接(例如,使用仅在仅安装当前项目目录时的VAGRANT),则可以使用- 复制选项。完成将Symfony代码完成测试到项目时,可以使用欧宝娱乐app下载地址- 重写选择将项目恢复到原始依赖项。

在拉索请求上工作

尽可能多地在代码上工作,并尽可能多地提交;但请记住以下内容:

  • 阅读关于Symfony欧宝娱乐app下载地址惯例并遵循编码标准(用Git.- 查看要检查尾随空格 - 还读取下面的尖端);
  • 添加单元测试以证明该错误是固定的或新功能实际工作;
  • 努力不要破坏向后兼容性(如果必须这样做,尝试提供一个兼容层来支持旧方式) - 打破向后兼容性的PRS有可能合并的机会较少;
  • 做原子和逻辑上单独的提交(使用电源Git.reb有一个干净且逻辑的历史);
  • 切勿在某些现有代码中修复编码标准,因为它使代码审查更加困难;
  • 编写良好的提交消息:从短语线(第一行)开始,然后是空行和更详细的描述。

    主题行应该从在方括号中工作的组件,桥梁或捆绑包开始([依赖性ineplate][frameworkbundle],......)。

    然后,大写句子,不要以句点结束,并使用命令动词开始。

    这是一个主题行的一个完整的示例:[魔法垃圾]添加`MagicConfig`允许配置事情

提示

提交拉动请求时,Fabbot.检查您的代码是否包含常见的错字,并验证您使用的PHP编码标准如定义PSR-1PSR-2

状态在拉出请求描述下面发布,其概述了它检测到的任何问题或任何问题Travis-CI.构建失败。

准备您提交的拉动请求

当您的PR不是关于错误修复时(例如添加新功能或更改现有问题时),它还必须包含以下内容:

  • 对相关变化的解释更改兴文件(s)([公元前休息]或者[弃用]必须在相关时使用前缀);
  • 关于如何在相关的情况下升级现有应用程序的解释升级文件如果更改中断向后兼容性,或者如果您弃用最终会破坏向后兼容性的东西。

第4步:提交您的拉索请求

每当您觉得您的PR准备好提交时,请按照以下步骤操作。

rebase

在提交PR之前,更新您的分支(如果需要一段时间以完成更改,则更新您的分支机构):

1 2 3 4 5
$git结帐5.。X$git上游提取$git merge上游/ 5.x$git checkout branch_name.$git rebase.5.。X

提示

代替5.x.与你以前选择的分支(例如4.4)如果您正在处理错误修复。

做什么时reb命令,您可能必须修复合并冲突。Git.状态会告诉你unmerged.文件。解决所有冲突,然后继续绑定:

1 2
$git添加...#添加已解析的文件$git rebase  -  continue.

检查所有测试仍然通过并将分支远程推送:

1
$git push --force origin branch_name

申请

您现在可以提取请求欧宝娱乐app下载地址symfony / symfony.github存储库。

提示

小心地指出你的拉力要求欧宝娱乐app下载地址Symfony:4.4如果您希望核心团队基于的核心团队提取错误修复4.4分支。

为了简化核心团队工作,始终将修改后的组件包含在拉请求消息中,如:

1 2
[yaml]修正了一些东西[表格] [验证器] [frameworkbundle]添加了一些东西

默认拉出请求描述包含一个表,您必须使用适当的答案填写。这可确保可以在没有不必要的反馈循环的情况下审查贡献,并且您的贡献可以尽可能快地包含在Symfony中。欧宝娱乐app下载地址

问题的一些答案触发了更多要求:

  • 如果您对“错误修复”回答是的,请检查Symfony问题中是否已列出该错误,并在“固定票证”中引用它/它们;欧宝娱乐app下载地址
  • 如果您对“新功能?”回答是,则必须将拉出请求提交给文档并在“DOC PR”部分下引用;欧宝体育电话
  • 如果您对“BC休息?”回答是的,则PR必须包含相关的更新更改兴升级文件;
  • 如果您对“弃用?”来回答是的,则PR必须包含相关的更新更改兴升级文件;
  • 如果回答否“测试通过”,则必须使用必须完成的操作来将项目添加到ToDo-List中以修复测试;
  • 如果“许可证”不是MIT,则只需提交拉拔请求就不会被接受。

如果未满足某些以前的要求,请创建Todo-List并添加相关项目:

1 2 3.
-  []修复测试,因为它们未更新 -  []向文档提交更改 -  []文档BC中断欧宝体育电话

如果代码尚未完成,因为您没有时间完成它或者因为您想要在您的工作中提前反馈,请将项目添加到Todo-List:

1 2
-  []完成代码 -  []收集我的更改的反馈

只要您在TODO-LIST中有项目,请使用“[WIP]”来预先提升拉请求标题。

在拉出请求说明中,对您的更改提供尽可能多的细节(请不要犹豫,提供代码示例以说明您的积分)。如果您的拉出请求是关于添加新功能或修改现有功能,请解释更改的基本原理。拉出请求描述有助于代码审查,并且当合并代码时,它用作参考(拉出请求描述和所有相关注释是合并提交消息的一部分)。

除了这个“代码”拉请求之外,您还必须向其中发送拉出请求欧宝体育电话文档存储库适当时更新文档。欧宝体育电话

第5步:接收反馈

我们要求所有贡献者跟随一些最佳实践确保建设性的反馈过程。

如果您认为有人无法牢记这一建议,并且您想要另一个角度,请加入#contrib频道欧宝娱乐app下载地址Symfony Slack.。如果您收到反馈,您可以找到滥用请联系护理团队

核心团队负责决定哪个PR被合并,因此他们的反馈是最相关的。因此,在某人提供反馈时,请勿迫切地迫使您立即重新推荐代码。

自动反馈

有许多自动脚本将提供有关拉出请求的反馈。

Fabbot.

Fabbot.将审核代码样式,检查常见的错别夹,并确保Git历史看起来很好。如果有任何问题,Fabbot通常会暗示应该做些什么变化。大多数时候,您可以获得命令要运行以自动修复更改。

这很罕见,但Fabbot可能是错误的。一个人应该验证建议的变化是否有意义,并且它们与拉出请求相关。

诗篇

诗篇如果它发现任何潜在类型的错误,将对拉出请求发表评论。诗篇错误并不总是正确的,但每个应该审查和讨论。拉出请求不应更新诗篇基线或添加@诗篇 -注释。

在之后安装了PSALM PHAR,分析可以在本地运行:

1
$PSALM.phar SRC 欧宝娱乐app下载地址/ Symfony / Component / Workflow

自动测试

提交拉动请求时将运行一系列自动化测试。这些测试代码在不同的条件下,以确保没有什么重要的破坏。测试失败可能与您的更改无关。如果您认为这是这种情况,您可以检查目标分支是否具有相同的错误并对您的PR留言。

否则,测试失败可能是由您的更改引起的。以下测试场景在每次更改时运行:

phpunit./测试

此作业使用多个PHP版本(每个作业)在Ubuntu上运行。这些作业就像在当地一样运行testsuite。

这些作业中的失败通常表示代码中的错误。

phpunit./测试(高档)

此作业检查每个包(桥梁,捆绑或组件)SRC /通过呼叫来单独致电作曲家更新phpunit.从每个包里面。

此作业的失败通常表示丢失的包装composer.json.失败的包装(例如src 欧宝娱乐app下载地址/ symfony / bundle / frameworkbundle / composer.json)。

此作业还使用“翻转”测试运行相关包(由A表示^包中的后缀)。这些测试结账了以前的主要版本(例如4.4提取请求5.4)并将您的分支作为依赖性运行测试。

这些翻转的测试中的失败表示您更改中的向后兼容性突破。

phpunit./测试(低DEPS)

此作业还单独检查每个包,但然后使用作曲家更新- 最低点在运行测试之前。

此作业的失败通常表示错误的版本范围或丢失的包composer.json.失败的包裹。

连续集成/ Appveyor / Pr

此作业使用x86架构和最低支持的PHP版本在Windows上运行。所有测试首先运行,无需额外的PHP扩展。然后,使用所有必需的PHP扩展来运行所有跳过的测试。

此作业中的故障通常表示您的更改不支持具有最小扩展的Windows,x86或php。

一体化/测试

集成测试需要运行其他服务(例如Redis或RabbitMQ)。这项工作只运行了测试一体化PHPUNIT集团。

此作业的失败表示与这些服务的通信中的错误。

phpunit./测试(实验)
这项工作始终通过(即使是故障测试),并且由核心团队使用,为即将到来的PHP版本做好准备。

返工你的拉请求

根据对拉请求的反馈,您可能需要重新建造您的PR。在重新提交PR之前,rebase上游/ 5.x.或者上游/ 4.4,不要合并;并强迫推动原点:

1 2
$git rebase -f上游/ 5.x$git push --force origin branch_name

笔记

做A.推送- 力量,始终明确指定分支名称以避免在存储库中删除其他分支(- 力量告诉git你真的想用它仔细弄乱的东西)。

主持人早些时候要求您“南瓜”为您的提交。这意味着您将转换许多提交给一个提交。今天不再需要,因为Symfony项目使用专有工具,在合并之前自动挤压所有提交。欧宝娱乐app下载地址

这项工作包括代码样本,是在a下获得的许可Creative Commons by-SA 3.0执照。