给开源项目如Apache Spark贡献代码的步骤

转载 2016年06月17日 21:01:15

想参与开源,却又不知道从何处开始,看到这边文章,仿佛知道了贡献的流程,故转载该帖,以备查阅。原文地址如下:
http://www.parallellabs.com/2014/08/05/how-to-contribute-to-spark-step-by-step/

本文将教大家怎样用10个步骤完成给Apache Spark贡献代码这个任务:)

1. 到 Apache Spark 的github 页面内点击 fork 按钮

2. 你的github帐户中会出现 spark 这个项目

3. 本地电脑上, 使用

git clone [你的 spark repository 的 github 地址]
例如:
git clone https://github.com/jacknichao/spark.git

本地得到一个叫 spark 的文件夹

4. 进入该文件夹,使用

git remote add upstream https://github.com/apache/spark.git

添加 Apache/spark 的远程地址

5. 使用

git pull upstream master

得到目前的 Apache/spark 的最新代码,现在我们在 你自己fork的Spark代码仓库的master 这个分支上,以后这个分支就留作跟踪 upstream 的远程代码

6.好了,现在你可以开始贡献自己的代码了

按照开发惯例,我们一般不在自己代码仓库的master上提交新的代码,而是需要为每一个新增的功能或者bugfix新增一个新的branch。使用:

git checkout -b my_change

创建新的分支,现在我们可以在这个分支上更改代码

7. 添加代码,并提交代码

git add *
git commit -m “message need to be added here”

8. 提交Pull Request 前合并冲突

在我们提交完我们的代码更新之后,一个常见的问题是远程的upstream(即apache/spark)已经有了新的更新,从而会导致我们提交Pull Request时会导致conflict。为此我们可以在提交自己这段代码前手动先把远程其他开发者的commit与我们的commit合并。
切换到我们自己的主分支,使用

git checkout master

拉出apache spark的最新的代码。

git pull upstream master

切换回 my_change 分支并合并master上的更改到当前分支,使用

git checkout my_change
git rebase master

然后把自己在my_change分支中的代码更新到在自己github代码仓库的my_change分支中去:

git push origin my_change

将代码提交到自己的仓库。

9. 提交Pull Request

这时候可以在自己的仓库页面跳转到自己的my_change分支,然后点击 new pull request。按照Spark的风格规定,我们需要在新的Pull Request的标题最前面加上JIRA代号。所以我们需要在https://issues.apache.org/jira/上创建一个新的JIRA,例如https://issues.apache.org/jira/browse/SPARK-2859。然后把SPARK-2859这个代号加到你的Pull Request的标题里面。

例如:https://github.com/apache/spark/pull/1782

Pull Rquest的描述的写法很重要。有几个要点:

(1)在Pull Request的描述中,一定记得加上你提交的JIRA的url,方便JIRA系统自动把Pull Request的链接加进去,例如https://issues.apache.org/jira/browse/SPARK-2859

(2)PR的描述要言简意赅,讲清楚你要解决的问题是什么,你怎么解决的。大家可以多参考其他committer提交的PR。

10. 等待Spark committer审核你的PR。

如果需要进一步的代码修改,你可以继续在本地的my_change分支下commit新的代码,所有新的代码会在”git push origin my_change”之后自动被加入你之前提交的Pull Request中,方便进行问题的跟踪和讨论。

11. 如果一切顺利,具有apache/spark.git 写权限的commiter就会把你的代码merge到apache/spark.git的master里面去了!

恭喜你!相信你一定很开心吧?

Happy contributing to Spark!

ps. 你的代码被merge完之后,就可以把my_change这个分支给删掉了:)

注:本文写的比较仓促,是在@lufeihaidao的基础上直接修改而成,特此感谢:https://github.com/19wu/19wu/issues/41
参考:

How to use github pull request: https://help.github.com/articles/using-pull-requests

github的多人协作: https://gist.github.com/suziewong/4378619

How to rebase a pull request:https://github.com/edx/edx-platform/wiki/How-to-Rebase-a-Pull-Request

我提交的一个JIRA例子:https://issues.apache.org/jira/browse/SPARK-2859

我提交的一个Spark PR的例子:https://github.com/apache/spark/pull/1782

相关文章推荐

github,怎么向开源项目贡献自己的代码和协作

醉了,有几张上传到开源中国服务器的图片挂了。。今晚修复下。。。2016-12-29 23:30 已修复,(上传到开源中国服务器的图片挂了还不承认。。醉了。。)摘要: 同步更新上游远程库,减少冲突。gi...

如何参与一个Apache开源项目

本文介绍如何参与Apache项目,从最初的user到contributer做起,目标成为commiter 已参与的Apache Zeppelin为例,说明步骤: Apache下面的每一个项目都有自...

Hinton神经网络公开课编程题2--神经概率语言模型(NNLM)

Hinton公开课编程题2--神经概率语言模型(NNLM)  这周的编程题主要是实现一个神经概率语言模型(NNLM),不过基础的大框架都搭好了,需要编程的部分也是以选择题的形式给出的。这都不重要,重要...

第一次向开源项目贡献代码的历程

本文转载至:http://115.159.48.140/2016/01/31/%E7%AC%AC%E4%B8%80%E6%AC%A1%E5%90%91%E5%BC%80%E6%BA%90%E9%A1%...

大数据--Apache Spark

  • 2017年08月09日 11:28
  • 838KB
  • 下载

如何在Github上为开源项目贡献自己的代码

下面和大家分享一下如何在Github上为开源项目贡献自己的代码。主要分为一下几个步骤 fork需要协作项目 克隆/关联fork的项目到本地 新建分支(branch)并检出(checkout)新分支 在...

Big Data with Apache Spark and Python mobi

  • 2017年10月03日 12:56
  • 70KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:给开源项目如Apache Spark贡献代码的步骤
举报原因:
原因补充:

(最多只允许输入30个字)