ArduPilot源碼極速下載手冊(一文告別github慢速問題)

標題先給出極速下載地址和方法:

提示:gitee上的代碼我已經取消同步到github了(同步到2020-4-2日),代碼方便大家下載,學習,交流。但是請不要修改上傳**(NO git push!)**

  1. 碼雲地址:https://gitee.com/gchasing/ardupilot.git 點擊這裏鏈接過去
  2. 使用方法:在terminal中,直接
 git clone https://gitee.com/gchasing/ardupilot.git
 git submodule update --init --recursive

即可下載完整代碼,整個過程除有兩個地方(代碼量極小)從github上走之外,均已經搬家到gitee了。預計10分鐘之內可以完成。

下面給出搬運過程,一共搬運了13個代碼倉庫!

首先將ArduPilot的代碼clone到國內gitee上,這部分知識請自行百度,在此不再贅述。然後git clone的代碼速度就變成了下圖這樣。槓槓的!
在這裏插入圖片描述
但是APM的代碼還沒有結束,此時下載下來的代碼由於缺少子模塊還不能正常編譯upload。正常情況下我們還需要執行git submodule update --init --recursive進行子模塊的更新。但是這部分更新仍然走github,速度更是慢的出奇。因此我們繼續深挖,勢必將速度提升到最大。根據文末的補充知識可知,子模塊放在.gitmodules中,如下圖所示
gedit .gitmodules 在這裏插入圖片描述
所以我們將github網址替換到國內gitee上,具體爲在gitee賬號上新建倉庫,同步一下網址即可。然後執行如下git指令將修改後的gitmodules上傳到git倉庫。

git add .
git commit -m "revise"
git push

然後,需要注意的是,在克隆項目後,默認子模塊目錄下無任何內容。需要在項目根目錄執行如下命令完成子模塊的下載:

git submodule init
git submodule update

此時,可以看到submodule已經從gitee上下載了,速度快了很多。但是還沒有結束,–recursive爲遞歸更新子模塊命令,所以下面還有坑!(姑且稱爲二級子模塊,三級子模塊)。
ArduPilot代碼中所有submodule代碼均放置在module文件夾下。打開modules文件夾,發現子文件夾中仍然存在二級子模塊,仍然需要更新,分別位於libcanard,mavlink,uavcan中,如下圖所示。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
此時注意:修改的爲子模塊中的submodule,也就是二級子模塊。會出現下圖的情況,需要
git checkout master
在這裏插入圖片描述
然後再進行git push提交。在這裏插入圖片描述
隨後跳轉到主目錄下,再次進行push,如下圖所示。(push 兩遍
在這裏插入圖片描述
其餘兩個子模塊同理完成即可。其中git的順序不能錯。否則請檢查是否push成功。
此時進行git submodule update --init --recursive 更新,發現仍然有三級子模塊從github上進行下載。速度較慢,但是總體速度已經快很多了。如下圖所示。在這裏插入圖片描述
作爲一個追求完美的人,絕不在這個地方掉鏈子。所以我們繼續深挖。
在這裏插入圖片描述
根據上圖的提示,很容易找到對應的gitmodule文件,同理進行修改。修改後如圖所示
在這裏插入圖片描述
注:三級子模塊修改存在問題,待後續解決。提供源代碼中並未進行修改,仍然走github。代碼量較小。

文末備註知識:

git submodule update --init --recursive

有時子模塊的項目維護地址發生了變化,或者需要替換子模塊,就需要刪除原有的子模塊。

刪除子模塊較複雜,步驟如下:

rm -rf 子模塊目錄 刪除子模塊目錄及源碼
vi .gitmodules 刪除項目目錄下.gitmodules文件中子模塊相關條目
vi .git/config 刪除配置項中子模塊相關條目
rm .git/module/* 刪除模塊下的子模塊目錄,每個子模塊對應一個目錄,注意只刪除對應的子模塊目錄即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章