最近需要下載rCore源代碼進行學習,在下載的過程中,遇到Git倉庫中的Submodule遞歸下載失敗的問題。本文將記錄如何解決此問題。
此處以rCore倉庫作為示例進行演示:
(1) 使用鏡像網站下載rCore:
# git clone https://github.com/rcore-os/rCore.git
# 在原下載網址后添加cnpmjs.org地址,轉為從鏡像網站下載
git clone https://github.com.cnpmjs.org/rcore-os/rCore.git
(2)修改submodule配置
進入下載后的rCore文件夾,可見文件目錄如下所示:
打開.gitmodules
文件,修改文件中的url
為鏡像網站地址,修改后如下所示:
(3)同步Submodule變更
git submodule sync
# 執行結果如下所示
# Synchronizing submodule url for 'rboot'
# Synchronizing submodule url for 'user'
(4)更新Submodule配置
此處需要注意,不要執行git submodule update --init --recursive
命令。在Submodule中包含Submodule的情況下,遞歸下載很有可能會繼續失敗。此時執行git submodule update --init
即可。
(5) 處理Submodule嵌套場景
在rCore/user文件夾下,嵌套有子Submodule,需要繼續更新.gitmodules
文件。改動效果如下所示:
(6) 繼續同步Submodule
執行命令如下所示:
如果實際項目中嵌套層級更深,請不斷執行(4)(5)(6)步驟。
至此,即完成rCore項目的Git Submodule文件遞歸下載。