代码

补丁和拉取请求是将代码贡献回 CakePHP 的好方法。拉取请求可以在 GitHub 中创建,并且优先于票证评论中的补丁文件。

初始设置

在为 CakePHP 处理补丁之前,最好先设置好环境。您将需要以下软件

  • Git

  • PHP 8.1 或更高版本

  • PHPUnit 5.7.0 或更高版本

使用您的姓名/句柄和工作电子邮件地址设置您的用户信息

git config --global user.name 'Bob Barker'
git config --global user.email '[email protected]'

注意

如果您不熟悉 Git,我们强烈建议您阅读优秀的免费ProGit书籍。

从 GitHub 获取 CakePHP 源代码的克隆

分叉完成后,将分叉克隆到您的本地机器

git clone git@github.com:YOURNAME/cakephp.git

将原始 CakePHP 存储库添加为远程存储库。您将在以后使用它从 CakePHP 存储库中获取更改。这将使您能够与 CakePHP 保持同步

cd cakephp
git remote add upstream git://github.com/cakephp/cakephp.git

现在您已经设置了 CakePHP,您应该能够定义$test 数据库连接,并运行所有测试

处理补丁

每次要处理错误、功能或增强功能时,都要创建一个主题分支。

您创建的分支应该基于您要修复/增强的版本。例如,如果您要修复3.x中的错误,您将希望使用master分支作为分支的基础。如果您的更改是针对 2.x 版本系列的错误修复,您应该使用2.x分支

# fixing a bug on 3.x
git fetch upstream
git checkout -b ticket-1234 upstream/master

# fixing a bug on 2.x
git fetch upstream
git checkout -b ticket-1234 upstream/2.x

提示

为您的分支使用描述性名称。引用票证或功能名称是一个很好的约定。例如,包括ticket-1234feature-awesome

以上将基于上游(CakePHP)2.x 分支创建本地分支。处理您的修复,并根据需要进行尽可能多的提交;但请记住以下几点

  • 遵循编码标准

  • 添加一个测试用例以显示错误已修复,或者新功能有效。

  • 保持您的提交逻辑,并编写清晰的提交信息,以提供有关您更改的内容和原因的上下文。

提交拉取请求

一旦您的更改完成,并且您已准备好将它们合并到 CakePHP 中,您将希望更新您的分支

# Rebase fix on top of master
git checkout master
git fetch upstream
git merge upstream/master
git checkout <branch_name>
git rebase master

这将获取+合并自您开始以来 CakePHP 中发生的任何更改。然后,它将重新设置 - 或者将您的更改重新播放到当前代码之上。您可能会在rebase过程中遇到冲突。如果重新设置过早退出,您可以使用git status查看哪些文件发生冲突/未合并。解决每个冲突,然后继续重新设置

git add <filename> # do this for each conflicted file.
git rebase --continue

检查所有测试是否仍然通过。然后将您的分支推送到您的分叉

git push origin <branch-name>

如果您在推送分支后进行了重新设置,您将需要使用强制推送

git push --force origin <branch-name>

将您的分支推送到 GitHub 后,您可以在 GitHub 上提交拉取请求。

选择更改将合并到的位置

在进行拉取请求时,您应该确保选择了正确的基分支,因为一旦创建了拉取请求,您就无法编辑它。

  • 如果您的更改是错误修复,并且没有引入新功能,只是更正了当前版本中存在的现有行为。那么选择master作为您的合并目标。

  • 如果您的更改是新功能或对框架的添加,那么您应该选择具有下一个版本号的分支。例如,如果当前稳定版本是4.0.0,则接受新功能的分支将是4.next

  • 如果您的更改会破坏现有功能或 API,那么您将不得不选择下一个主要版本。例如,如果当前版本是4.0.0,那么下次可以破坏现有行为的版本将是5.x,因此您应该针对该分支。

注意

请记住,您对 CakePHP 做出的所有代码贡献都将在 MIT 许可下获得许可,并且Cake 软件基金会将成为任何贡献代码的所有者。贡献者应遵循CakePHP 社区指南

合并到维护分支的所有错误修复也将定期由核心团队合并到即将发布的版本中。