提出改变

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 4.4,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

提出改变

截屏视频

你更喜欢视频教程吗?请查看回馈Symfony欧宝娱乐app下载地址视频系列。

拉请求(简称“PR”)是提供错误修复或建议增强Symfony的最佳方式。欧宝娱乐app下载地址

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

在开始改变之前,看看是否有人也提出了这个话题,或者甚至可能已经开始做PR了在GitHub上搜索

如果您不确定或在整个过程中有任何问题,请在网站上提问#普通发布版频道欧宝娱乐app下载地址Symfony松弛

步骤2:设置环境

安装软件堆栈

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

  • Git;
  • PHP 7.1.3或更高版本。

配置Git

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

1 2
Git配置——global user.name“你的名字”Git配置——全局用户。电子邮件you@example.com

提示

如果您是Git的新手,强烈建议您阅读优秀的免费版本ProGit书。

提示

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

提示

Windows用户:在安装Git时,安装程序会询问如何处理行尾,并建议将所有LF替换为CRLF。如果您希望对Symfony做出贡献,这是错误的设置!欧宝娱乐app下载地址选择as-is方法是最好的选择,因为Git会将换行符转换为存储库中的换行符。如果你已经安装了Git,你可以输入以下命令检查这个设置的值:

1
Git配置core. selflf

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

1
Git配置——全局核心。autocrlf输入

如果希望仅为活动存储库设置——global,则使用——local替换——global

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

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

  • 创建一个GitHub登记和签到;
  • 叉的欧宝娱乐app下载地址Symfony库(点击“Fork”按钮);
  • 在“fork动作”完成后,在本地克隆你的fork(这将创建一个欧宝娱乐app下载地址目录):
1
git克隆git@github.com:用户名/ symf欧宝娱乐app下载地址ony.git
  • 将上游存储库添加为远程:
1 2
cd欧宝娱乐app下载地址Git远程添加上游https://github.com/symfony/symfony欧宝娱乐app下载地址.git

检查当前的测试是否通过

现在已经安装了Sy欧宝娱乐app下载地址mfony,请检查您的环境中的所有单元测试是否都通过了文档

第三步:处理Pull Request

许可

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

选择正确的分支

在开始PR工作之前,你必须确定你需要在哪个分支工作:

请注意

所有合并到维护分支中的错误修复也会定期合并到最近的分支中。例如,如果您为4.4分公司,PR也将由核心团队应用5.倍而且6.倍分支。

创建主题分支

每次你想为一个bug或一个增强进行PR工作时,创建一个主题分支:

1
git checkout -b BRANCH_NAME 5.x

或者,如果您想为4.4布兰奇,先追踪遥控器4.4本地分支:

1
Git checkout -track origin/4.4

然后创建一个新的分支4.4分支来修复bug:

1
git checkout -b BRANCH_NAME

提示

为分支使用描述性名称(ticket_XXX在哪里XXX票号是bug修复的一个很好的约定)。

上面的签出命令自动将代码切换到新创建的分支(检查您正在使用的分支git分支).

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

如果您想在使用欧宝娱乐app下载地址symfony / symfony或Sy欧宝娱乐app下载地址mfony组件,您可以使用链接之前克隆的Git存储库中提供的实用程序。此工具扫描供应商/目录,找到它使用的Symfony包,并将它们替换为指向Git存储库欧宝娱乐app下载地址中的那些包的符号链接。

1
PHP链接/路径/到/your/项目

在运行链接命令时,确保要调试的项目的依赖项已通过运行安装作曲家安装在里面。

提示

如果由于开发环境的原因,到本地Symfony分支的符欧宝娱乐app下载地址号链接在项目内部无法解析(例如,当使用Vagrant时,其中仅挂载了当前项目目录),您可以选择使用——复制选择。在完成将Symfony代码测试到项目中时,可以使用欧宝娱乐app下载地址——回滚选项,使项目恢复到其原始依赖项。

处理你的Pull Request

你想做多少就做多少,提交多少就提交多少;但请记住以下几点:

  • 阅读Symfony欧宝娱乐app下载地址约定并遵循编码标准(使用Git diff——检查检查尾随空格——也可以阅读下面的提示);
  • 添加单元测试,以证明bug已修复或新功能确实有效;
  • 尽量不要破坏向后兼容性(如果你必须这样做,尝试提供一个兼容层来支持旧的方式)——破坏向后兼容性的pr被合并的机会更少;
  • 进行原子提交和逻辑上分离的提交(使用git变基有一个干净的和合乎逻辑的历史);
  • 永远不要在一些现有的代码中修正编码标准,因为这会使代码审查更加困难;
  • 编写好的提交消息:以简短的主题行(第一行)开始,然后是空行和更详细的描述。

    主题行应该以你正在处理的组件、桥接或包开始,用方括号括起来((DependencyInjection)(FrameworkBundle),……)。

    然后,将句子大写,不要以句号结尾,使用祈使句开始。

    下面是主题行的完整示例:[MagicBundle]添加' MagicConfig ',允许配置东西

提示

当提交pull请求时,fabbot检查代码中常见的拼写错误,并验证所使用的PHP编码标准是否符合PSR-1而且PSR-2

在拉取请求描述的下方会发布一个状态,其中包含它检测到的任何问题或任何GitHub Actions构建失败的摘要。

准备提交的Pull请求

当你的PR不是关于bug修复时(例如当你添加一个新功能或改变一个现有功能时),它还必须包括以下内容:

  • 对相关变化的解释更新日志文件(s) ((公元前打破)或者是(弃用)在相关情况下必须使用前缀);
  • 有关如何升级现有应用程序的说明升级如果更改破坏了向后兼容性,或者如果您弃用了最终会破坏向后兼容性的某些内容,则文件。

第四步:提交Pull Request

当你觉得你的PR已经准备好提交时,请遵循以下步骤。

调整你的Pull Request

在提交PR之前,更新你的分支(如果你需要一段时间才能完成更改,则需要更新):

1 2 3 4 5
Git checkout 5.xGit上游获取Git merge upstream/5.xgit checkout BRANCH_NAMEGit重新编译5.x

提示

取代5.倍使用您之前选择的分支(例如。4.4)如果你正在修复一个bug。

当做变基命令时,您可能必须修复合并冲突。git状态会向你展示unmerged文件。解决所有冲突,然后继续重基:

1 2
Git add…#添加解析文件Git rebase——继续

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

1
git push——force origin BRANCH_NAME

提出拉请求

对象上的拉取请求欧宝娱乐app下载地址symfony / symfonyGitHub库。

提示

注意将您的pull请求指向欧宝娱乐app下载地址symfony: 4.4如果您希望核心团队根据4.4分支。

为了简化核心团队的工作,总是在你的pull request消息中包含修改过的组件,比如:

1 2
[Form] [Validator] [FrameworkBundle]添加了一些东西

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

一些问题的答案会引发更多的要求:

  • 如果你对“Bug修复?”的回答是肯定的,检查该Bug是否已经在Symfony问题中列出,并在“修复票据”中引用它/它们;欧宝娱乐app下载地址
  • 如果你对“新功能?”的回答是肯定的,你必须向文档提交一个pull request,并在“Doc PR”部分引用它;欧宝体育电话
  • 如果你对“BC中断?”的回答是肯定的,那么PR必须包含相关的更新更新日志而且升级文件;
  • 如果你对“Deprecations?”的回答是肯定的,那么PR必须包含相关的更新更新日志而且升级文件;
  • 如果对“测试通过”回答“否”,则必须向待办事项列表中添加一个项目,其中包含修复测试必须执行的操作;
  • 如果“许可证”不是MIT,就不要提交拉请求,因为它无论如何都不会被接受。

如果上面的一些要求不满足,创建一个待办事项列表,并添加相关项目:

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

如果代码还没有完成,因为你没有时间完成它,或者因为你想要对你的工作得到早期的反馈,在待办事项列表中添加一个项目:

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

只要您在待办事项列表中有项目,请在拉取请求标题前加上“[WIP]”。

在拉取请求描述中,尽可能详细地描述您的更改(不要犹豫,可以给出代码示例来说明您的观点)。如果您的pull请求是关于添加新功能或修改现有功能,请解释这些更改的基本原理。拉取请求描述有助于代码审查,并在代码合并时作为参考(拉取请求描述及其所有相关注释是合并提交消息的一部分)。

除了这个“代码”的拉请求外,还必须向欧宝体育电话文档存储库适时更新文档。欧宝体育电话

第五步:接受反馈

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

如果你认为有人没有记住这个建议,而你想要换个角度,请加入我们#普通发布版频道欧宝娱乐app下载地址Symfony松弛.如果你收到反馈,你发现辱骂,请联系护理团队

核心团队负责决定哪些PR被合并,所以他们的反馈是最相关的。因此,当有人提供反馈时,不要感到有压力立即重构代码。

自动反馈

有许多自动脚本可以为拉取请求提供反馈。

fabbot

fabbot将检查代码风格,检查常见的拼写错误,并确保git历史记录看起来良好。如果有任何问题,fabbot通常会建议应该做什么改变。大多数情况下,您会得到一个命令来自动修复更改。

这种情况很少见,但fabbot可能是错的。应该验证建议的更改是否有意义,以及它们是否与pull请求相关。

诗篇

诗篇如果发现任何潜在的类型错误,将对拉请求做注释。诗篇中的错误并不总是正确的,但每一个错误都应该被回顾和讨论。一个拉请求不应该更新诗篇基线或添加@psalm -注释。

诗篇的phar被安装,分析可在本地运行:

1
诗篇。phar src 欧宝娱乐app下载地址/ Symfony /组件/工作流

自动化测试

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

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

PHPUnit /测试

这个作业在Ubuntu上使用多个PHP版本运行(每个版本都有自己的作业)。这些作业运行测试套件,就像在本地运行测试套件一样。

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

PHPUnit /测试(高deps)

该作业检查其中的每个包(网桥、包或组件)src /通过单独调用作曲家更新而且phpunit)从每个包裹里面。

此作业的失败通常表示在目录中丢失包composer.json失败的包(例如:src 欧宝娱乐app下载地址/ Symfony /包/ FrameworkBundle / composer.json).

此作业还使用“翻转”测试(由包名中的后缀)。这些测试检查以前的主要版本(例如。4.4对于一个pull requests on5.4),并将您的分支作为依赖项运行测试。

这些翻转测试中的失败表明更改中的向后兼容性中断。

PHPUnit /测试(低分贝)

该作业还单独检查每个包,然后使用编写器更新——prefer-lowest在运行测试之前。

此作业的失败通常表示版本范围错误或文件中缺少包composer.json失败的软件包。

持续集成/ appveyor /公关

该作业运行在使用x86体系结构和最低支持的PHP版本的Windows上。所有测试首先运行时都没有额外的PHP扩展。然后,使用所有必需的PHP扩展运行所有跳过的测试。

这项工作的失败通常表明您的更改不支持具有最小扩展的Windows、x86或PHP。

集成/测试

集成测试需要运行其他服务(如Redis或RabbitMQ)。中运行的测试集成PHPUnit)组。

此作业的失败表明与这些服务的通信存在错误。

PHPUnit /测试(实验性)
该任务总是能够通过(即使测试失败),并由核心团队用于为即将到来的PHP版本做准备。

重做你的Pull Request

根据对拉请求的反馈,你可能需要重做你的PR。在重新提交PR之前,rebase with上游/ 5. x上游/ 4.4,不要合并;并将其推至原点:

1 2
Git rebase -f upstream/5.xgit push——force origin BRANCH_NAME

请注意

当做推,力,总是显式地指定分支名称,以避免混淆存储库中的其他分支(——力告诉Git你真的想搞砸事情,所以要小心)。

版主之前要求你“压缩”提交。这意味着您将把多个提交转换为一次提交。现在已经不需要这样做了,因为Symfony项目使用了一个专有工具,可以在合并之前自动压欧宝娱乐app下载地址缩所有提交。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。