以下以 esp-idf 为例说明,其他包含 submodules 的仓库,如 esp-adf 等均可以参考:【ESP8266】加快ESP8266_RTOS_SDK下载速度最新方法记录
【常规方法】
1、ESP-IDF Programming Guide 中默认使用如下命令来克隆 esp-idf:
git clone --recursive https://github.com/espressif/esp-idf.git
注:git 命令带了 --recursive 参数后会克隆包括子模块在内的所有仓库。
2、通过以下命令完成子模块的更新:
git submodule update --init --recursive
3、经常会出现克隆失败或者以下问题:
remote: Repository Not Found
fatal: repository 'https://gitee.com/espressif/asio.git/' not found
fatal: 无法克隆 'https://gitee.com/espressif/asio.git' 到子模组路径 'components/asio/asio'
【新方法】
下面是全新的方法,下载速度极快:
submodule-update.sh 脚本下载与使用方法:
//1、下载gitee工具
git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
//2、下载esp-idf(仅克隆 esp-idf,不包含子模块)
git clone https://gitee.com/EspressifSystems/esp-idf.git
或者指定版本
git clone -b release/v3.3 https://gitee.com/EspressifSystems/esp-idf.git
//3、进入工具目录,执行命令更新子模块
cd esp-gitee-tools
./submodule-update.sh ~/esp/esp-idf (~/esp/esp-idf 替换为你的 esp-idf 实际路径)
如果是windows系统下使用git窗口:
./submodule-update.sh /D/esp/esp-idf
注意:
- 如果仓库中的 submodules 没有增加或减少,在使用过该脚本的工程内需要对仓库进行更新的情况下,无需一定要再次执行该脚本,可以使用标准的 git 命令,如
git pull && git submodule update --init --recursive
来更新,当然要再次使用该脚本也是没有问题的。 - 如果要切换版本,由于不同版本包含的 submodules 可能不同,建议切换版本后再次执行该脚本。
- 如果执行脚本过程中由于网络原因异常退出,可以重复执行该脚本。