天天看點

如何向開源社群奉獻代碼

從事嵌入式工作, 日常就是與u-boot, linux這些開源代碼打交道, 将自己的代碼送出到主線, 将是一件快樂而又能提升逼格的事情. 有些比較新的代碼會使用github進行bug追蹤, pr合并, 這些直接在github送出Pull Request就好了, 比較簡單, 就不在贅述. 本文重點介紹如何使用mail list的方式送出自己的代碼, 以u-boot為例介紹.

當需要實作一個feature或者修改一個bug, 我們需要從master上面切換一個分支:

之後在目前分支上對主線代碼進行修改, 不要将所有的修改都送出到一個commit上面, 而是應該将修改拆分成幾個獨立的commit, 這樣也便于稽核和維護. 在commit之前需要配置git的郵箱等資訊:

配置完成之後, 可以使用git config --list檢查下是否已經設定成功.

開源的代碼對commit都有一個約定俗成的三段式寫法, 第一段簡要寫明目前commit修改的主要内容. 第二段可以詳細的描述下為什麼這麼做等等原因. 第三段簽上自己Signed-off-by. 下面是u-boot代碼中的一個例子:

當然, 每次commit都寫一個Signed-off-by很費勁, 是以git有選項可以配置一個commit的模闆檔案, 在每次commit的時候自動填充一些資訊:

建立一個outgoing檔案夾, 将目前的修改輸出到patch檔案中.

u-boot的源碼中有checkpatch.pl程式, 可以對patch的格式進行檢查, 在送出之前一定要檢查下patch:

對u-boot而言, 需要将patch發送到maling list: [email protected], 同時需要通知相關的維護者. 有時候, 我們也不知道誰是這份代碼的維護者, 也不知道應該通知誰. 還好, 有工具可以擷取某些patch的維護者:

按照mailing list的要求, 發送的patch不能有亂七八糟的格式, 就是純文字, 是以不能用添加附件的方式來發送. 為此, 開源社群的大佬們做了一個git send-email的程式. 如果未安裝的話, 可以使用apt安裝.

安裝之後, 需要配置郵箱smtp位址, 賬号, 密碼等. 下面是我使用的網易郵箱的配置. sendemail.smtppass是郵箱密碼的明文.

配置好賬号資訊之後, 就可以使用send-email發送patch了. 可以将上面得到的維護者的郵箱全部填上:

待發送完成之後, 可以在patchwork上面找到這個送出: http://patchwork.ozlabs.org/project/uboot/patch/[email protected]/

當patch發送出去之後, 一般而言并不能直接合并入master, 主線代碼維護者會對patch進行稽核, 并回複. 回複的資訊會發送到郵箱中. 後續可以在使用郵件進行溝通. 郵箱用戶端推薦使用Mozilla Thunderbird.

對稽核的建議作出修改, 需要使用git rebase回退到某一個commit修改, 全部修改完成之後, 生成patch, 重複send-email的工作即可.

感謝完成閱讀,我是喜歡打籃球的寫代碼的籃球球癡,這個是我的公衆号,感謝你關注并支援。我從大學開始接觸電子和嵌入式軟體知識,至今,已經畢業工作了9年,我喜歡嵌入式,也願意從事這個行業。不管是從技術還是職場經驗,都積累了足夠多的經驗,目前在一個非常優秀的團隊中做開發工作。

很高興認識每一個對技術努力,對人用心的朋友。

上一篇: button控件