如何为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了.
我这里为大家提供一个简单的说明, 如果在Github上开始开发, 在你自己的PHP代码仓库的页面上, 会有一个说明, 比如在我的PHP仓库页面上https://github.com/laruence/php-src:
ssh git@github.com:laruence/php-src.git
然后, 我就在本地开发环境上, 执行:
$git clone git@github.com:laruence/php-src.git
然后, 你就得到了一个php-src目录, 进去开发吧。
4. 等你修复完成以后, 你提交到你属于你自己的这个PHP仓库中, 然后, 在你的PHP源代码仓库的Github页面的右上角, 会有一个pull request按钮. 点它.
提交的时候, 请注意你的提交说明的格式, 首先第一行应该是个简短的说明(最多79个字符), 说明你做了什么修改. 如果一句话说不完, 就插入一个空行, 然后输入大段的说明(参看New Commit Message Format) :
\n \n \n
如果你是修复了一个列在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贡献源代码有几点要注意的(常见的问题):
- 只写C89兼容的代码, 比如, 不要用单行注释(//), 变量的定义一定要在所有语句之前(block的开始)..
- 变量命名, 遵循PHP已有的规范, 不要使用驼峰命名.
- 对于一些非常小的更新, 比如代码中有拼写错误, 还是鼓励大家到bugs.php.net上提交Patch, 毕竟Merge Pull Request有的时候会比较麻烦.
更多的PHP代码规范, 参看这里: Submitting patch
上一篇: 理解PHP5中static和const关键字的区别
下一篇: Linux下设置Oracle自启动
推荐阅读
-
如何为PHP贡献你的源代码
-
PHP-Beast 加密你的PHP源代码
-
如何为PHP贡献你的源代码_PHP教程
-
使用PHP-Beast加密你的PHP源代码
-
脚本语言是必然趋势,在开发成本面前,其他都是浮云。现在的问题是,把解释语言转成编译语言的转换器,如Java的JIT compiler,你认为最近Facebook开源的JIT PHP编译器及虚拟机,是否可以提供这种可能性?
-
PHP-Beast 加密你的PHP源代码
-
脚本语言是必然趋势,在开发成本面前,其他都是浮云。现在的问题是,把解释语言转成编译语言的转换器,如Java的JIT compiler,你认为最近Facebook开源的JIT PHP编译器及虚拟机,是否可以提供这种可能性?