github 參與開源專案開發或貢獻程式碼流程
參與開源專案或規範使用git
作為一個coder,如何為頂級的apache社群貢獻程式碼,成為apache contributer之一,瞭解規範使用gitlab是很有必要的
以下以apache flink為例,介紹如何給apache 貢獻程式碼。
通常如下流程,你為apache貢獻程式碼
- 遇到了一個apache專案的bug或新增一個新功能
- 如果改動較小:在 https://issues.apache.org 建一個ISSUE,一般遇到小的bug或問題可以在issue列表查一下是否已存在,如果有的話可以參與或跟進;
- 如果改動較大:最好發一個討論郵件,並開啟一個FLIP (Flink Improvement Proposals)在https://cwiki.apache.org/confluence/display/FLINK/Flink+Improvement+Proposals,大家經過討論之後,最後發起投票,在有3個committer通過之後,就可以自進入開發階段了。
- 投票通過後,就可以建立相關的issue或者子issue;
開發程式碼
-
fork程式碼
首先需要要有自己的github賬號,把flink的程式碼fork到自己的賬號下,開啟https://github.com/apache/flink,點選這個fork按鈕,之後我們就會在我們自己的賬號下看到相應的工程了。
-
下載程式碼到本地
之後我們就可以把剛才fork的flink的程式碼下載到我們的本地,可以用下面的命令:
git clone https://github.com/xxxxxxxx/flink.git
-
新增遠端倉庫
遠端倉庫,主要是為了後續提交更新程式碼。
git remote add apache https://github.com/apache/flink.git
查詢遠端倉庫命令git remote -v 可以看到有兩個遠端倉庫。
origin https://github.com/xxxxxxxx/flink.git (fetch)
origin https://github.com/xxxxxxxx/flink.git (push)
apache https://github.com/apache/flink.git (fetch)
apache https://github.com/apache/flink.git (push)
-
新增新分支
接下來,新增一個新分支,用於開發我們的程式碼。
分支的名字可以自己隨便起,比如為了方便區分和查詢,我們可以起一個和這issue同名的分支名,或者根據功能起一個自己好識別的分支名.
我這個是我起了一個和這個功能相關的分支名.
https://github.com/xxxxxxxx/flink/tree/xxxx
然後我們現在就可以在這個分支上開發自己的程式碼了,開發完程式碼之後,我們需要檢查一下程式碼的規範,這個也就是checkstyle,
具體的使用可以參考這篇文章: 【flink教程-在IntelliJ IDEA 中玩轉 checkstyle】
-
寫測試程式碼
最後開發完了相關的程式碼之後,需要在相關的測試類裡面新增相應的測試程式碼,如果新增一個新功能,還需要新增相應的文件。
-
提交程式碼
我們開發完了程式碼之後,這段時間可能flink的主分支已經有了程式碼的更新,所以我們為了避免衝突,還需要把最新的程式碼更新下來。首先切換到主分支
git checkout master
git pull apache master
之後,我們切換到我們的分支:
# 切換到自己的分支
git checkout flink-orc-input
# 新增剛才改動的程式碼,如果不確定改了哪些,可以git status看一下
git add your_code
git commit -m '註釋'
# 把變化的程式碼新增到我們的分支
git rebase
# 提交分支到自己的倉庫
git push origin flink-orc-input
-
提交到社群
我們提交分支之後,就可以提交相應的PR(Pull Request)了,比如我的這個PR: https://github.com/apache/flink/pull/11434 。
提交的時候注意標題要寫成 [ISSUE] + title的形式,比如 [FLINK-16646] [orc] Flink read orc file ...... 這樣的話就能把你這個pr和issue自動關聯上。
之後我們就能在相應的issue頁面看到關聯的PR
-
合併PR
程式碼提交完後,會有相關的committer或者其他人review程式碼,
如果committer認同了你的改動,然後他就會把你的改動合併到master分支,或者是其他相應的版本分支。
-
程式碼貢獻者的名單
list-of-contributors 中可以看到程式碼貢獻者的名單
https://flink.apache.org/news/2020/07/06/release-1.11.0.html#list-of-contributors
關於開源
原始碼中的測試類都是相關功能的開發者提供的,所以對於瞭解測試新功能有很好的幫助