怎样孝顺我的源代码 === 此文档先容了 ThinkPHP 团队的组成以及运转机制, ,, ,,,您提交的代码将给 ThinkPHP 项目带来什么利益, ,, ,,,以及怎样才华加入我们的行列。 。。。。。 ## 通过 Github 孝顺代码 ThinkPHP 现在使用 Git 来控制程序版本, ,, ,,,若是你想为 ThinkPHP 孝顺源代码, ,, ,,,请先大致相识 Git 的使用要领。 。。。。。我们现在把项目托管在 GitHub 上, ,, ,,,任何 GitHub 用户都可以向我们孝顺代码。 。。。。。 加入的方法很简朴, ,, ,,,`fork`一份 ThinkPHP 的代码到你的客栈中, ,, ,,,修改后提交, ,, ,,,并向我们提倡`pull request`申请, ,, ,,,我们会实时对代码举行审查并处置惩罚你的申请并。 。。。。。审查通事后, ,, ,,,你的代码将被`merge`进我们的客栈中, ,, ,,,这样你就会自动泛起在孝顺者名单里了, ,, ,,,很是利便。 。。。。。 我们希望你孝顺的代码切合: * ThinkPHP 的编码规范 * 适当的注释, ,, ,,,能让其他人读懂 * 遵照 Apache2 开源协议 **若是想要相识更多细节或有任何疑问, ,, ,,,请继续阅读下面的内容** ### 注重事项 * 本项目代码名堂化标准选用 [**PSR-2**](http://www.kancloud.cn/thinkphp/php-fig-psr/3141);;;;;;; * 类名和类文件名遵照 [**PSR-4**](http://www.kancloud.cn/thinkphp/php-fig-psr/3144);;;;;;; * 关于 Issues 的处置惩罚, ,, ,,,请使用诸如 `fix #xxx(Issue ID)` 的 commit title 直接关闭 issue。 。。。。。 * 系统会自动在 PHP 7.1 ~ 7.3 上测试修改, ,, ,,,请确保你的修改切合 PHP 7.1 ~ 7.3 的语规则范;;;;;;; * 管理员不汇合并造成 CI faild 的修改, ,, ,,,若泛起 CI faild 请检查自己的源代码或修改响应的[单位测试文件](tests);;;;;;; ## 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. 举行修改, ,, ,,,若你的修改包括要领或函数的增减, ,, ,,,请记得修改[单位测试文件](tests);;;;;;; 6. 变基(衍合 `rebase`)你的分支到上游 master 分支;;;;;;; 7. `push` 你的外地客栈到 GitHub;;;;;;; 8. 提交 `pull request`;;;;;;; 9. 期待 CI 验证(若欠亨过则重复 5~7, ,, ,,,GitHub 会自动更新你的 `pull request`);;;;;;; 10. 期待管理员处置惩罚, ,, ,,,并实时 `rebase` 你的分支到上游 master 分支(若上游 master 分支有修改)。 。。。。。 *若有须要, ,, ,,,可以 `git push -f` 强行推送 rebase 后的分支到自己的 `fork`* *绝对不可以使用 `git push -f` 强行推送修改到上游* ### 注重事项 * 若对上述流程有任何不清晰的地方, ,, ,,,请查阅 GIT 教程, ,, ,,,如 [这个](http://backlogtool.com/git-guide/cn/);;;;;;; * 关于代码**差别方面**的修改, ,, ,,,请在自己 `fork` 的项目中**建设差别的分支**(缘故原由拜见`完整流程`第9条备注部分);;;;;;; * 变基及交互式变基操作拜见 [Git 交互式变基](http://pakchoi.me/2015/03/17/git-interactive-rebase/) ## 推荐资源 ### 开发情形 * XAMPP for Windows 5.5.x * WampServer (for Windows) * upupw Apache PHP5.4 ( for Windows) 或自行装置 - Apache / Nginx - PHP 7.1 ~ 7.3 - MySQL / MariaDB *Windows 用户推荐添加 PHP bin 目录到 PATH, ,, ,,,利便使用 composer* *Linux 用户自行设置情形, ,, ,,, Mac 用户推荐使用内置 Apache 配合 Homebrew 装置 PHP 和 MariaDB* ### 编辑器 Sublime Text 3 + phpfmt 插件 phpfmt 插件参数 ```json { "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 图形界面客户端