查看: 834|回复: 0

[入门教程] ArduPilot 源码极速下载手册

[复制链接]

46

主题

796

帖子

1596

积分

金牌飞友

Rank: 6Rank: 6

积分
1596
飞币
798
注册时间
2017-8-12
发表于 2022-10-27 21:13:22 | 显示全部楼层 |阅读模式
本教程由阿木论坛用户 chasing 发布,可移步论坛查看原文。
开篇先给出极速下载地址和方法:
提示:gitee上的代码我已经取消同步到github了(同步到2020-4-2日),代码方便大家下载,学习,交流。但是**请不要修改上传(NO git push!)

  • 码云地址:https://gitee.com/gchasing/ardupilot.git
  • 使用方法:在terminal中,直接
git clone <a href="https://gitee.com/gchasing/ardupilot.git" target="_blank">https://gitee.com/gchasing/ardupilot.git</a>

git submodule update --init --recursive即可下载完整代码,整个过程除有两个地方(代码量极小)从 github 上走之外,均已经搬家到 gitee 了。预计 10 分钟之内可以完成。
下面给出搬运过程,一共搬运了13个代码仓库!
首先将 ArduPilot 的代码 clone 到国内 gitee 上,这部分知识请自行百度,在此不再赘述。然后 git clone 的代码速度就变成了下图这样。杠杠的!

[入门教程] ArduPilot 源码极速下载手册-1.jpg
但是 APM 的代码还没有结束,此时下载下来的代码由于缺少子模块还不能正常编译 upload。正常情况下我们还需要执行 git submodule update --init --recursive 进行子模块的更新。但是这部分更新仍然走 github,速度更是慢的出奇。因此我们继续深挖,势必将速度提升到最大。根据文末的补充知识可知,子模块放在 .gitmodules 中,如下图所示 gedit .gitmodules  

[入门教程] ArduPilot 源码极速下载手册-2.jpg
所以我们将 github 网址替换到国内 gitee 上,具体为在 gitee 账号上新建仓库,同步一下网址即可。然后执行如下 git指令 将修改后的 gitmodules 上传到 git 仓库。
git add .
git commit -m "revise"
git push然后,需要注意的是,在克隆项目后,默认子模块目录下无任何内容。需要在项目根目录执行如下命令完成子模块的下载:
git submodule init

git submodule update[color=rgba(0, 0, 0, 0.8)] 此时,可以看到 submodule 已经从 gitee 上下载了,速度快了很多。但是还没有结束,--recursive 为递归更新子模块命令,所以下面还有坑!(姑且称为二级子模块,三级子模块)。
ArduPilot 代码中所有 submodule 代码均放置在 module 文件夹下。打开 modules 文件夹,发现子文件夹中仍然存在二级子模块,仍然需要更新,分别位于 libcanard,mavlink,uavcan 中,如下图所示。

[入门教程] ArduPilot 源码极速下载手册-3.jpg

[入门教程] ArduPilot 源码极速下载手册-4.jpg

[入门教程] ArduPilot 源码极速下载手册-5.jpg

[入门教程] ArduPilot 源码极速下载手册-6.jpg

此时注意:修改的为子模块中的 submodule,也就是二级子模块。会出现下图的情况,需要
git checkout master

[入门教程] ArduPilot 源码极速下载手册-7.jpg

然后再进行 git push 提交。

[入门教程] ArduPilot 源码极速下载手册-8.jpg
随后跳转到主目录下,再次进行 push,如下图所示。(push 两遍

[入门教程] ArduPilot 源码极速下载手册-9.jpg

其余两个子模块同理完成即可。其中 git 的顺序不能错。否则请检查是否 push 成功。
此时进行[backcolor=rgba(0, 0, 0, 0.05)][size=0.85em] git submodule update --init --recursive 更新,发现仍然有三级子模块从 github 上进行下载。速度较慢,但是总体速度已经快很多了。如下图所示。

[入门教程] ArduPilot 源码极速下载手册-10.jpg

作为一个追求完美的人,绝不在这个地方掉链子。所以我们继续深挖。

[入门教程] ArduPilot 源码极速下载手册-11.jpg

根据上图的提示,很容易找到对应的 gitmodule 文件,同理进行修改。修改后如图所示

[入门教程] ArduPilot 源码极速下载手册-12.jpg
注:三级子模块修改存在问题,待后续解决。提供源代码中并未进行修改,仍然走github。代码量较小。
文末备注知识:
git submodule update --init --recursive有时子模块的项目维护地址发生了变化,或者需要替换子模块,就需要删除原有的子模块。

删除子模块较复杂,步骤如下:

  • rm -rf 子模块目录 删除子模块目录及源码
  • vi .gitmodules 删除项目目录下.gitmodules文件中子模块相关条目
  • vi .git/config 删除配置项中子模块相关条目
  • rm .git/module/* 删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可
CSDN 原帖链接:https://blog.csdn.net/qq_15390133/article/details/105280801
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表