第一次向開源項目貢獻代碼的歷程


原文發表在我的博客主頁,轉載請注明出處。

前言

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的編譯了,以下是最終結果:

等待審核

目前編譯通過,等待進一步的進展

總結

開源讓開發變得簡單,開源讓我們不再重復造輪子,開源大法好


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM