給開源專案如Apache Spark貢獻程式碼的步驟
本文將教大家怎樣用10個步驟完成給Apache Spark貢獻程式碼這個任務:)
1. 到 Apache Spark 的github 頁面內點選 fork 按鈕
2. 你的github帳戶中會出現 spark 這個專案
3. 本地電腦上, 使用
本地得到一個叫 spark 的資料夾
4. 進入該資料夾,使用
新增 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代號。所以我們需要在
Pull Rquest的描述的寫法很重要。有幾個要點:
(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這個分支給刪掉了:)