如何为PHP贡献代码
PHP在之前把源代码迁移到了git下管理, 同时也在github(https://github.com/php/php-src)上做了镜像, 这样一来, 就方便了更多的开发者为PHP来贡献代码.
今天写这篇文章, 就是为了给在国内的同学们, 愿意为PHP开源社区做贡献的同学们, 做个示例, 如何为PHP来贡献你的智慧.
现在, 假设你要为贡献一个新特性, 那么你除了要做下面的这些步骤以外, 还需要在wiki.php.net上提交一个RFC, 待会我会介绍这个, 现在让我们先简单点, 假设你只是要为PHP修复一个bug(一般来说, 大家可以在这里发现PHP已经报告的bug:PHP Bugs). 现在假设你已经想好了要怎么修复这个Bug.
1. 首先, 你需要有一个github的账号, 没有的话, 来这里注册: 注册github.
2. Fork PHP的源代码, 在PHP的Github页面上的右上角有一个fork按钮, 点它
3. Fork以后, 你就有了一份属于你自己的PHP源代码仓库, 现在你就可以在这个仓库下, 修改PHP的源代码来为它修复Bug了.
具体开发没什么好说的, 不过如果对于Git的使用有问题的话, 可以参考Git使用手册, 比如这个:ProGit
我这里为大家提供一个简单的说明, 如果在Github上开始开发, 在你自己的PHP代码仓库的页面上, 会有一个说明, 比如在我的PHP仓库页面上https://github.com/laruence/php-src:
- ssh git@github.com:laruence/php-src.gi
然后, 我就在本地开发环境上, 执行:
- $git clone git@github.com:laruence/php-src.gi
然后, 你就得到了一个php-src目录, 进去开发吧, ![]()
4. 等你修复完成以后, 你提交到你属于你自己的这个PHP仓库中, 然后, 在你的PHP源代码仓库的Github页面的右上角, 会有一个pull request按钮. 点它.
提交的时候, 请注意你的提交说明的格式, 首先第一行应该是个简短的说明(最多79个字符), 说明你做了什么修改. 如果一句话说不完, 就插入一个空行, 然后输入大段的说明(参看New Commit Message Format) :
- <max 79 characters short description>\n
- \n
- <long description, 79 chars per line>
- \
如果你是修复了一个列在bugs.php.net上的bug, 那么你的简短说明应该类似如下格式:
- Fixed Bug #bug号 (Bug的描述)
5. 然后, 填写相关的信息, Github就会给PHP的pull request邮件组发送一份包含着你的更新的Pull Request邮件(大家不用担心你的英文, 只要你能说出来, 我们就能看懂, 当然, 如果你实在不愿意写英文, 也没关系, 写中文吧, 我看到了会处理, 我处理不了的, 我也会为大家翻译).
6. 最后, 如果PHP的Committers们认为你的修复正确(有一些为PHP贡献代码要注意的选项, 我留在下面). 就会Merge你的Pull Request到PHP的源代码中.
现在, 假设你要提交的是, 一个更新(添加新函数, 添加新语法), 那么在你提交了Pull Request的同时, 你还需要往internals@lists.php.net邮件组发送一个邮件, 来说明你为什么要提交这个更新, 让在这个邮件组的人们一起来讨论, 帮助你完善你的想法.
最后, 在你为PHP贡献了一些更新以后(被Committer接受的更新), 那么你就可以尝试在: Register Svn Accout上来申请一个你自己的PHP Developer账号了. ![]()
附录:
为PHP贡献源代码有几点要注意的(常见的问题):
1. 只写C89兼容的代码, 比如, 不要用单行注释(//), 变量的定义一定要在所有语句之前(block的开始)..
2. 变量命名, 遵循PHP已有的规范, 不要使用驼峰命名.
3. 对于一些非常小的更新, 比如代码中有拼写错误, 还是鼓励大家到bugs.php.net上提交Patch, 毕竟Merge Pull Request有的时候会比较麻烦.
更多的PHP代码规范, 参看这里: Submitting patch
注:本文转自:技术头条

如何为PHP贡献代码的更多相关文章
- 如何为 smartraiden 贡献代码
如何为 smartRaiden 贡献代码 1.Fork 项目 登录 github 账号,并访问https://github.com/SmartMeshFoundation/SmartRaiden,然后 ...
- 如何往Spark社区做贡献,贡献代码
随着社区正在努力准备Apache Spark的下一版本3.0,您可能会问自己“我如何参与其中?”.现在的Spark代码已经很庞大,因此很难知道如何开始自己做出贡献.Spark PMC & Co ...
- 如何在github上fork一个项目来贡献代码以及同步原作者的修改
[-] 如何贡献自己的力量 如何让自己的项目与原作者的项目保持同步 作为一个IT人,通过github进行学习是最快的成长手 段.我们可以浏览别人的优秀代码.但只看不动手还是成长得很慢,因此为别人贡献代 ...
- 花20分钟写的-大白话讲解如何给github上项目贡献代码
原文地址:http://site.douban.com/196781/widget/notes/12161495/note/269163206/ 本文献给对git很迷茫的新手,注意是新手,但至少会点基 ...
- 【转】如何在github上fork一个项目来贡献代码以及同步原作者的修改 -- 不错
原文网址:http://www.cnblogs.com/astwish/articles/3548844.html 作为一个IT人,通过github进行学习是最快的成长手段.我们可以浏览别人的优秀代码 ...
- 为微软samples-for-ai贡献代码是种怎么样的体验?
推送原文链接:传送门 关注SomedayWill,了解为微软项目贡献代码的始终. 还记得微软神器samples-for-ai吗?它可不仅仅可以用来安装框架,它其实是个开源的AI样例库,以Visual ...
- GitHub上fork一个项目贡献代码以及同步原作者的修改【转】
如何贡献自己的力量 首先你总得有自己的github帐号吧,注册一个,非常简单,只需用户名,邮箱,密码,邮箱只是用来找回密码的,不做验证.因此注册后立即能用!比如我现在新注册一个叫JsLouvre的示范 ...
- (转)大白话讲解如何给github上项目贡献代码
转自:https://site.douban.com/196781/widget/notes/12161495/note/269163206/ 2013-03-30 22:53:55 本文献给对g ...
- 大白话讲解如何给github上项目贡献代码
本文献给对git很迷茫的新手,注意是新手,但至少会点基本操作,有点基本概念的新手,我不会从怎么用github和git是什么开始讲的.如果作为新手你看书又看不进去,原理又太复杂,又没有直接了当告诉我们怎 ...
随机推荐
- OSGi 的核心配置、动态化及问题
一.OSGi的核心组件Bundle,与java中jar包的差别就是元数据配置: 常用的Bundle元数据定义: a) Bundle-Activator:定义Activator的实现全 ...
- 代码里面执行bat
public static void executeBat(String path) { try { File file = new File(path); ...
- NDK环境搭建
- BEA-WEBLOGIC ---http://www.beansoft.biz/weblogic/docs92/index.html
WebLogic Home 英文对照 发行信息 站点地图 Installation Guide 新增功能 已知和已解决的问题 Upgrade Guide Installing Ma ...
- JavaOOP 试题
1) 以下属于OOP的特征有(). a)继承 b)封装 c)多态 d)隐藏 2) JavaOOP中的多态包括() a) 方法重写 b) 方法重载 c) 方法隐藏 d) 以上 ...
- 【转】关于IE7 z-index问题完美解决方案
来源:http://jacobcookie.iteye.com/blog/1876426 浏览器兼容性问题太让人蛋疼了,今天可是废在了IE7的z-index问题上.可又不能因为浏览器版本低而不去解决, ...
- 使用prototype 对象定义类成员
使用prototype 对象定义类成员上一节介绍了类的实现机制以及构造函数的实现,现在介绍另一种为类添加成员的机制:prototype 对象.当new 一个function 时,该对象的成员将自动赋给 ...
- Android 异步加载解决方案
Android的Lazy Load主要体现在网络数据(图片)异步加载.数据库查询.复杂业务逻辑处理以及费时任务操作导致的异步处理等方面.在介绍Android开发过程中,异步处理这个常见的技术问题之前, ...
- C#-提取网页中的超链接
转载:http://www.wzsky.net/html/Program/net/26849.htmlusing System; using System.Xml; using System.Text ...
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
权限问题,授权 给 root 所有sql 权限 mysql> grant all privileges on *.* to root@"%" identified by & ...