1. 程式人生 > 其它 >github 參與開源專案開發或貢獻程式碼流程

github 參與開源專案開發或貢獻程式碼流程

參與開源專案或規範使用git

作為一個coder,如何為頂級的apache社群貢獻程式碼,成為apache contributer之一,瞭解規範使用gitlab是很有必要的

以下以apache flink為例,介紹如何給apache 貢獻程式碼。

通常如下流程,你為apache貢獻程式碼

  1. 遇到了一個apache專案的bug或新增一個新功能
  2. 如果改動較小:在 https://issues.apache.org 建一個ISSUE,一般遇到小的bug或問題可以在issue列表查一下是否已存在,如果有的話可以參與或跟進;
  3. 如果改動較大:最好發一個討論郵件,並開啟一個FLIP (Flink Improvement Proposals)在https://cwiki.apache.org/confluence/display/FLINK/Flink+Improvement+Proposals,大家經過討論之後,最後發起投票,在有3個committer通過之後,就可以自進入開發階段了。
  4. 投票通過後,就可以建立相關的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

關於開源

原始碼中的測試類都是相關功能的開發者提供的,所以對於瞭解測試新功能有很好的幫助