shopxo/thinkphp/CONTRIBUTING.md
devil_gong 08436c74f1 v1.2.0
2018-12-28 18:58:37 +08:00

4.3 KiB
Executable File
Raw Blame History

如何贡献我的源代码

此文档介绍了 ThinkPHP 团队的组成以及运转机制,您提交的代码将给 ThinkPHP 项目带来什么好处,以及如何才能加入我们的行列。

通过 Github 贡献代码

ThinkPHP 目前使用 Git 来控制程序版本,如果你想为 ThinkPHP 贡献源代码,请先大致了解 Git 的使用方法。我们目前把项目托管在 GitHub 上,任何 GitHub 用户都可以向我们贡献代码。

参与的方式很简单,fork一份 ThinkPHP 的代码到你的仓库中,修改后提交,并向我们发起pull request申请,我们会及时对代码进行审查并处理你的申请并。审查通过后,你的代码将被merge进我们的仓库中,这样你就会自动出现在贡献者名单里了,非常方便。

我们希望你贡献的代码符合:

  • ThinkPHP 的编码规范
  • 适当的注释,能让其他人读懂
  • 遵循 Apache2 开源协议

如果想要了解更多细节或有任何疑问,请继续阅读下面的内容

注意事项

  • 本项目代码格式化标准选用 PSR-2
  • 类名和类文件名遵循 PSR-4
  • 对于 Issues 的处理,请使用诸如 fix #xxx(Issue ID) 的 commit title 直接关闭 issue。
  • 系统会自动在 PHP 5.4 5.5 5.6 7.0 和 HHVM 上测试修改,其中 HHVM 下的测试容许报错,请确保你的修改符合 PHP 5.4 ~ 5.6 和 PHP 7.0 的语法规范;
  • 管理员不会合并造成 CI faild 的修改,若出现 CI faild 请检查自己的源代码或修改相应的单元测试文件

GitHub Issue

GitHub 提供了 Issue 功能,该功能可以用于:

  • 提出 bug
  • 提出功能改进
  • 反馈使用体验

该功能不应该用于:

  • 提出修改意见(涉及代码署名和修订追溯问题)
  • 不友善的言论

快速修改

GitHub 提供了快速编辑文件的功能

  1. 登录 GitHub 帐号;
  2. 浏览项目文件,找到要进行修改的文件;
  3. 点击右上角铅笔图标进行修改;
  4. 填写 Commit changes 相关内容Title 必填);
  5. 提交修改,等待 CI 验证和管理员合并。

若您需要一次提交大量修改,请继续阅读下面的内容

完整流程

  1. fork本项目;
  2. 克隆(clone)你 fork 的项目到本地;
  3. 新建分支(branch)并检出(checkout)新分支;
  4. 添加本项目到你的本地 git 仓库作为上游(upstream)
  5. 进行修改,若你的修改包含方法或函数的增减,请记得修改单元测试文件
  6. 变基(衍合 rebase)你的分支到上游 master 分支;
  7. push 你的本地仓库到 GitHub
  8. 提交 pull request
  9. 等待 CI 验证(若不通过则重复 5~7GitHub 会自动更新你的 pull request
  10. 等待管理员处理,并及时 rebase 你的分支到上游 master 分支(若上游 master 分支有修改)。

若有必要,可以 git push -f 强行推送 rebase 后的分支到自己的 fork

绝对不可以使用 git push -f 强行推送修改到上游

注意事项

  • 若对上述流程有任何不清楚的地方,请查阅 GIT 教程,如 这个
  • 对于代码不同方面的修改,请在自己 fork 的项目中创建不同的分支(原因参见完整流程第9条备注部分
  • 变基及交互式变基操作参见 Git 交互式变基

推荐资源

开发环境

  • XAMPP for Windows 5.5.x
  • WampServer (for Windows)
  • upupw Apache PHP5.4 ( for Windows)

或自行安装

  • Apache / Nginx
  • PHP 5.4 ~ 5.6
  • MySQL / MariaDB

Windows 用户推荐添加 PHP bin 目录到 PATH方便使用 composer

Linux 用户自行配置环境, Mac 用户推荐使用内置 Apache 配合 Homebrew 安装 PHP 和 MariaDB

编辑器

Sublime Text 3 + phpfmt 插件

phpfmt 插件参数

{
	"autocomplete": true,
	"enable_auto_align": true,
	"format_on_save": true,
	"indent_with_space": true,
	"psr1_naming": false,
	"psr2": true,
	"version": 4
}

或其他 编辑器 / IDE 配合 PSR2 自动格式化工具

Git GUI

  • SourceTree
  • GitHub Desktop

或其他 Git 图形界面客户端