如何使用“回购”克隆最小的Android源?

我可以使用“回购”工具克隆Android源代码。 但是,我想要做的是以比11GB的占用空间更小的方式克隆源代码。 它似乎下载与每个Android设备和每个以前的版本有关的东西。 我试过以为我可以通过检查这样一个特定的分支来减less这一点:

repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1 

然而,最终发生的事情是,我仍然把所有的一切都介入,只是在一个特定的快照(可以理解)。 但有没有办法限制克隆的数量?

Solutions Collecting From Web of "如何使用“回购”克隆最小的Android源?"

Android源码树由许多独立的git仓库组成,这些仓库都是由仓库pipe理的。 您无法真正减less为特定git存储库下载的数据量。

但是,您只能使用repo sync <project>下载可用的git repos子集。 也就是说,如果你只是想要框架/基础包,你应该能够做repo sync frameworks/base ,做初始repo init

如果你实际上想要build立源代码,你可能需要完整的东西。

您可能可以通过删除不需要的设备存储库来保存一两个演出。 您可以通过编辑<source> /。repo / manifest.xml并删除不需要的设备的存储库来执行此操作。

有很多事情可以做。 首先,使用-c参数的“repo sync”会将签出的沙箱限制为“当前”分支。 回购同步不会下载其他分支的材料。

您也可以编辑.repo / manifests / default.xml清单。 我所做的是对其进行备份,比如“default.bak”,然后从default.xml文件中删除我知道我不需要的文件。 因为我不是在Macintosh上创build的,所以我知道我不需要任何“达尔文”工具,所以我删除了包含“达尔文”的每一行。 然后“回购同步”不下载任何达尔文项目或在沙箱中安装源代码。

如果您已经同步了一个沙箱,并且想要修剪它的大小,那么可以像上面那样去除项目,然后执行“repo sync -c -l”,并且回购同步将只删除刚删除的目录。 -l标志只做同步的本地部分,这意味着它只会同步本地的git项目和你的源码树。 networking没有使用。 看到正常同步的另一半的“-n”标志,这是networking同步更新上游存储库的本地git项目。

为了也删除不需要的项目的git支持对象存储(占用大量的空间),我使用这个:

 for project in `diff ~/android/.repo/manifests/default.xml ~/android/.repo/manifests/default.bak | awk '{print $3}' | grep path | cut -f2 -d\"`; do rm -rf ~/android/.repo/projects/$project.git ; rm -rf ~/android/.repo/project-objects/$project.git ; done 

这将查找您的备份清单中的所有项目,但已从活动清单中删除,并删除git项目及其所有备份数据。 这恢复了很多空间。

如果删除太多,只需从备份清单中恢复项目行,然后将其添加回活动清单。 然后,回购同步将让你的git项目和你的沙箱再次变直。 您可以通过在项目目录中执行“mma -B -n”来testing构build以查看是否删除了很多内容。 这将试图完全依赖你的目标,即使他们不需要它,也会强制所有的目标build立起来,并且这将作为一个空运行。 如果构build失败,你删除了你的项目需要的东西。

您还可以设置本地镜像沙箱,并从镜像中创build小型的工作参考沙箱。 工作沙箱不包含git对象存储,但是指的是镜像中的中央部分。 使用“repo init -u … –mirror”来设置镜像,并使用“repo init –reference =〜/ android-mirror -u …”来引用镜像。 后者中的-u标志允许真正的上游存储库用作权限,而镜像引用则用作本地高速caching。 本地镜像还可避免AOSP项目执行的下载配额,并且同步速度更快。