Ardupilot 源码国内下载搬运点和实现过程
极速下载地址和方法:提示:gitee上的代码我已经取消同步到github了(同步到2020-4-2日),代码方便大家下载,学习,交流。但是请不要修改上传**(NO git push!)**。
码云地址:https://gitee.com/gchasing/ardupilot.git
点击这里链接过去
使用方法:在terminal中,直接
1 git clone https://gitee.com/gchasing/ardupilot.git
2 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仓库。
1 git add .
2 git commit -m "revise"
3 git push
然后,需要注意的是,在克隆项目后,默认子模块目录下无任何内容。需要在项目根目录执行如下命令完成子模块的下载:
1 git submodule init
2 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/* 删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可
————————————————原文链接:https://blog.csdn.net/qq_15390133/java/article/details/105280801
往期推荐阅读往期热文(点击文章标题即可直接阅读):无人机行业盛会来袭!四大亮点不容错过
只要无人机能帮上武汉的,我们尽力
行业应用|简单好用的无人机大气监测系统
系留无人机供电基站
翔仪•明珠飞控无人机培训专用版
深入一巡检作业现场,致导科技攻关业内难
无人车机地面站,加固的更好用
完整的无人机动力系统测试解决方案
长光禹辰 MS600 V2多光谱相机发布
页:
[1]