第一次向開源項目貢獻代碼的歷程
原文發表在我的 博客主頁 ,轉載請注明出處。
前言
github大神請繞道而行~~~
這篇文章并沒有什么高深的技術,只是自己簡單的一個歷程,以及對github的體驗,相信博客園有很多大牛或者即將成為大牛的人,呼吁大家多多開源,共同進步,開始正文。
從我的使用角度來看,github主要有兩個功能,一個是代碼管理,另一個則是協同開發,之前一直用的是前一個功能,將代碼寫完之后,及時保存,及時提交,我一直用的是windows桌面版,覺得github真心好用、方便而且操作不難,不過前幾天github也宕機過。。。
在去年下半年了做了一些SDN開源控制器ryu的工作,自己修改了ryu拓撲發現的邏輯,書寫了源碼,關于這個修改的詳細介紹可以參見我的博客,這篇文章也得到了中國最大的sdn網絡平臺,sdnlab的認可和 收錄 。向開源社區貢獻的第一個代碼便由此展開。
過程
貢獻代碼的起因
之前做了一些關于ryu的工作,書寫了一些應用,在某次需要建立交大網絡拓撲的時候,發現了ryu的拓撲發現能力有較大的局限性(最后經過比較,發現虛擬交換機CPqD的性能比OpenvSwitch也有一定差距),所以修改了ryu拓撲發現原理,之后放在了自己的 github 中,發表了一些博客,但是閱讀和代碼使用人數十分有限。
前幾天SDN方面的一個牛人,在github上看到了 我的工作 ,提了問題,并鼓勵我將這部分代碼貢獻給ryu,所以激發了我第一次向開源工程貢獻代碼的想法。
貢獻代碼的過程
整個過程可以按照:書寫代碼->提交merge請求->編譯檢錯->通過->。。。,因為目前只進行到了通過這一步,后面的待續,當然這整個過程都可以通過命令行來實現,這里主要說的是客戶端。在1月30號做完了手頭的論文相關的工作之后,修改和完善了之前的代碼,便開始提交,簡述提交的過程:
- 前文提過,我用的是github Windows上的客戶端,如下圖,之前已經fork過了ryu項目,并且clone到了本地,所以直接在本地修改代碼
- 修改之后,github客戶端的changes會有提示,然后commit,同步到遠程
- 之后在guthub網頁,自己的branch下,點擊 New pull request ,進行合并,點擊 view pull request 查看詳細過程
- 之后就會發現持續幾分鐘的編譯過程,主要包括python代碼正確性檢測,以及最嚴格的PE8標準,由于之前的代碼實在linux和Windows下都有編譯的,所以格式有很多問題,包括空格tab鍵混用,空行白有空格,注釋的#后面沒有空格,以及類與類之間的空行數這些問題,來回折騰了好幾遍,終于得到了如下圖所示的編譯通過。
-
在檢查通過之后,在發博客前不久看了下github網站上自己commit的狀態,發現了一個問題,如下圖,即“This branch has conflicts that must be resolved”。
為解決這個問題找了些資料,最終發現是因為ryu的upstream(也就是ryu的最初創建者)commit了一些代碼(不論是別人的pull requeest,還是merge等),證據如下圖,可以看出osrg,也就是ryu的最初創建維護者,進行了新的merge,而且和自己修改的文件產生了沖突。
解決辦法:git fetch或者git clone獲取最新版本,然后在客戶端直接同步之后就會發現,已經自動進行merger的編譯了。
等待審核
目前編譯通過,等待進一步的進展
總結
開源讓開發變得簡單,開源讓我們不再重復造輪子,開源大法好
</ul> </div>
來自: http://www.cnblogs.com/cotyb/p/5173434.html