如何給開源項目貢獻代碼,以spring爲例

首先要勇於邁開這一步,不用把這件事情想的很困難,即便是 spring 這種級別的項目,普通人也能夠參與進來。java

從小事作起,別好高騖遠

有的人一上來就想着給開源項目貢獻核心代碼,這其實很是不現實,特別是 spring 這種級別的項目,代碼須要嚴格要求按照官方要求來編寫,而且須要編寫全方位的測試用例。提交以後還要被 spring 官方層層嚴格審查,常常一、2個月都不必定能合併到主分支中。git

因此能夠從最簡單的地方入手,好比文檔、註釋、簡單的邏輯錯誤等。這些地方不只容易入手,並且經過官方審覈的概率也更大些,合併速度也更快。github

有的人可能又要說了,這算什麼,這也算貢獻。的確,這些都是些小事,但若是有1萬我的作了這些小事,加起來會對該項目產生巨大的幫助。redis

另外這些小事能夠幫你入門這個項目,爲以後核心代碼的提交打好基礎。spring

從工做中發現問題

雖然提倡給開源項目作貢獻,但也沒必須專門去研究某個開源項目,除非你特別想參與到該項目中。c#

像我,更多的是在工做中發現了問題,而後順手解決一下,舉手之勞嘛,人人爲我,我爲人人。工具

說了這麼可能是但願你們不要好高騖遠,即便是很小的問題,遇到之後順手解決一下,也是對開源事業的一種貢獻。post

接下來,我會經過一個很是簡單的案例來展現如何爲 spring 項目貢獻代碼。測試

案例

在我封裝Redis 操做類的時候(參考基於 RedisTemplate 自定義 Redis 操做類),發現ui

spring-data-redis-2.1.11.RELEASE-sources/org/springframework/data/redis/core/ListOperations.java

leftPush() 方法與描述驗證不符,並且給的redis的網址和命令也是錯的

相似的狀況還有 177行的 rightPush() 方法

剛開始和大部分人的想法同樣,這種小事懶得去管,後來想了一下,可能有人會所以而產生誤解,因而仍是嘗試着去給官方修復一下,也算是爲 spring 項目作點小小的貢獻。

有人可能想說不就改個註釋嗎,這算什麼貢獻!對於這種人我只想說,就是由於有你這樣的人,因此這個小小的錯誤才一直留到如今尚未修復!

總體流程

整個過程主要分爲5步

  1. fork 項目
  2. 將貢獻代碼提交到本身fork的項目上
  3. 去 spring jira 上建立一個問題,並得到惟一標示碼
  4. pull requests 並加上惟一標示碼
  5. 等待官方審覈

fork 項目

點擊 fork 就會拷貝一份當前項目到你本身的倉庫

提交代碼到本身fork的項目上

去本身的倉庫把項目下載下來

而後在本地修改好後,提交,push到你的遠端。

spring 項目對縮減等代碼格式有要求,參考 Spring 項目 貢獻準則 準則裏面提供了格式化的工具

注意,spring 項目使用製表符縮進而不是4個空格

在 spring 官方的錯誤跟蹤器,建立一個問題

Spring JIRA 是Spring 官方的錯誤跟蹤器,對外開放,支持中文,註冊也很簡單,直接經過github受權。

建立好以後,在裏面添加一個問題,儘可能填寫詳細點,例如

以前那個方法與描述不匹配的問題已經被解決了,無法演示。這裏展現的是一個新的問題。(是的,我後來又發現有註釋寫錯誤了)

建立好後會自動生成票據,如圖中的紅框

把它拷貝下來以後會用到

pull requests

獲得 DATAREDIS-xxx 這個票據後,就能夠 pull requests 了

檢查你的代碼,沒問題就建立

最關鍵的一步來了,這裏面提到的每一步都要仔細閱讀,寫的是 spring 對提交的格式和其餘的一些要求

瞭解完條條框框後,開始正式提交

注意,紅框中填寫的內容要符合 spring 的要求

確認無誤後提交

等待審覈

提交以後等待審覈

若是你是第一此貢獻代碼,還會要求你簽署一個協議。

合併完成

你提交以後,會有人來處理,若是官方以爲沒有什麼問題會合並你的提交,以下

完成合並以後,主分支代碼也變成你修改後的樣子,而後該項目的貢獻者中也會有你的名字

相關文章
相關標籤/搜索