天天看點

Git——git的項目應用方法

作者:嵌入式Lab

Git現在已經是軟體行業的基礎必備工具了,面試官一問git,不知道那是什麼,就有點掉分咯。網上鋪天蓋地都是git的使用教程,但是該怎麼用于項目及如何規劃使用,似乎又很少提及了(可能我看的少,見諒),今天我們就來探讨下git如何應用于項目中,着重說明下git子子產品的使用方法。

一般情況下,輕度開發的同學都是git clone一下源碼倉庫,咦還有子子產品,這什麼鬼?搜下指令“git submodule ...”、“ git pull ...”一頓操作猛如虎,輕松搞定。突然老闆要讓你建立一個原始項目,還要用上公司的積累代碼庫,還要一并納入項目和代碼管理,本來是個表現的機會,結果兩眼一黑蒙了,那麼我們就來淺談下git的項目應用。

首先,在嵌入式軟體開發過程中,公司會有很多代碼積累,同時也存在多人協作開發(當然你說我們公司就一人開發,我從頭寫到尾,那麼确實可以不用管那麼多),現在的嵌入式開發也注重架構搭建以及架構的使用,這樣就對代碼的架構建構以及版本的管理有很高的要求。

還是舉個例子,公司要求做兩個項目(隻考慮軟體):一,用一個MCU驅動攝像頭拍照,偵測到有人的時候,儲存圖檔然後通過wifi子產品上傳照片到雲平台;二,用一個MCU驅動攝像頭拍照,偵測到有人時,播報一段歡迎語;公司有攝像頭驅動,圖像識别算法等,但是都不能直接使用,要趁這次項目來完善,同時所有代碼都要納入版本管理。老闆讓你負責,同時派給你2個同僚(張三、李四)一起開發,周期1個月。這時你會怎麼做?當然在高手眼裡這都不是事,一個人幾天搞定所有,其他同僚都去摸魚去吧,我最棒,嘿嘿。

我先闡述下我的設想,并用git做代碼管理。首先應用場景,需求分析,可行性分析什麼的就先簡略了。先概要設計下,軟體部分主要包括攝像頭驅動、wifi子產品驅動、語音子產品驅動、圖像識别算法、項目1業務實作、項目2業務實作。這裡我們采用分層、子產品化的設計方式,每一個驅動、功能、實作可以看做一個獨立子產品,同時預先定好各子產品的API接口,之後大家協同開發。

分工如下:

我:開發圖像識别算法、攝像頭驅動

張三:開發wifi子產品驅動、項目1業務實作

李四:開發語音子產品驅動、項目2業務實作

這裡用的是gitee做的示範,當然有的公司用gitlab或github的也一樣,隻做一個簡單的說明。

首先建立兩個組織“資源倉庫”、“項目産品”。“資源倉庫”放公用的子產品,“項目産品”放具體的項目産品

Git——git的項目應用方法
為了公用的子產品便于複用和管理,我們建立一個資源倉庫的組織,然後把可以複用的子產品都建成一個獨立的倉庫,其中的倉庫可以對團隊所有人開放,也可以根據需求确定權限。
Git——git的項目應用方法
再給兩個項目建立倉庫,放在項目産品組織中,這裡項目隻需對專人開放就行,比如張三參與項目1,李四參與項目2。
Git——git的項目應用方法
首先在本地建構項目,先clone項目1,此時項目1是空的,有個README.md文檔而已
Git——git的項目應用方法
複制連結位址,本地clone如下

git clone https://gitee.com/project-products/item-1.git           
Git——git的項目應用方法

本地就有了項目1的檔案夾

Git——git的項目應用方法

項目1用到“A型攝像頭驅動”、“圖像識别算法”,“W型wifi子產品驅動”我們把它們做為子子產品關聯進來

首先是“A型攝像頭驅動”

Git——git的項目應用方法

在項目1檔案夾下添加子子產品

git submodule add https://gitee.com/resource-warehouse/type-a-camera-driver.git           
Git——git的項目應用方法

此時多了一個“type-a-camera-driver”檔案夾,這個就是“A型攝像頭驅動”,其中已經有了程式

Git——git的項目應用方法

用指令檢視下狀态

git status           

多了兩個檔案,其中子子產品的詳細内容使用git單獨管理的

Git——git的項目應用方法

這時用指令送出并推送到遠端倉庫

git commit -am"%HEAD 添加子子產品"
git push origin master           
Git——git的項目應用方法

此時再看下遠端倉庫上的内容,就已經更新了,已經包含了子倉庫

Git——git的項目應用方法

點選紅色圈内的檔案名,就可以直接跳轉到子倉庫了

這是以指令行的方式添加的子倉庫,在gitee上也可以網頁端直接添加

點選“檔案”中的“建立子子產品”

Git——git的項目應用方法

寫入檔案夾名及倉庫位址及送出的哈希值,确定即可

Git——git的項目應用方法

此時項目1倉庫的内容如下

Git——git的項目應用方法

多了wifi的驅動

Git——git的項目應用方法

然後繼續把算法子產品也添加進來,最終如下圖所示:

Git——git的項目應用方法

這樣就可以在項目1裡開發業務了,驅動、算法也可以獨立開發了。項目2的建立方式也是一樣。

這樣我、張三、李四就可以協同并行開發了,同時把所有的源碼都納入了版本管理,把複用的子產品作為資源儲備起來,以便往後的項目快速應用開發。

當然要做到真正的協同開發,子產品的複用,像程式設計規範,API接口規範、版本疊代規範等基礎工作是必不可少,任重而道遠,這裡隻是以一個簡單的示例闡釋git的項目應用方法。

繼續閱讀