android-4.3_r1的repo sync aosp,.repo目录大小达到70G

repo sync aosp of android-4.3_r1, the size of the .repo directory reach 70G

我已经下载了 Android 源代码,命令如下:

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.3_r1 --repo-url=git://codeaurora.org/tools/repo.git --repo-branch=caf-stable
repo sync

android-4.3_r1源码大小7G左右。 但是 .repo 目录的大小达到了 70G。

进入.repo目录,发现有一个project-objects目录,大小为70G。

为什么repo目录这么大? 项目对象目录有什么用?

没关系。

.repo/project-objects 包含 Git Objects

当您使用 repo 时,Git 对象不会直接存储在存储库中。如果您查看工作区存储库之一的 .git 目录,您会看到很多符号 link 到 .repo/project-objects

例如:

$ cd bionic/.git
$ la
-rw-rw-r-- 1 hugo hugo   41 juin  22 15:24 [2]  HEAD
lrwxrwxrwx 1 hugo hugo   38 juin  22 15:24 [3]  config -> ../../.repo/projects/bionic.git/config
lrwxrwxrwx 1 hugo hugo   55 juin  22 15:24 [4]  description -> ../../.repo/project-objects/aosp/bionic.git/description
lrwxrwxrwx 1 hugo hugo   49 juin  22 15:24 [5]  hooks -> ../../.repo/project-objects/aosp/bionic.git/hooks
-rw-rw-r-- 1 hugo hugo 440K juil.  3 15:42 [6]  index
lrwxrwxrwx 1 hugo hugo   48 juin  22 15:24 [7]  info -> ../../.repo/project-objects/aosp/bionic.git/info
lrwxrwxrwx 1 hugo hugo   36 juin  22 15:24 [8]  logs -> ../../.repo/projects/bionic.git/logs
lrwxrwxrwx 1 hugo hugo   51 juin  22 15:24 [9]  objects -> ../../.repo/project-objects/aosp/bionic.git/objects
lrwxrwxrwx 1 hugo hugo   43 juin  22 15:24 [10] packed-refs -> ../../.repo/projects/bionic.git/packed-refs
lrwxrwxrwx 1 hugo hugo   36 juin  22 15:24 [11] refs -> ../../.repo/projects/bionic.git/refs
lrwxrwxrwx 1 hugo hugo   52 juin  22 15:24 [12] rr-cache -> ../../.repo/project-objects/aosp/bionic.git/rr-cache
lrwxrwxrwx 1 hugo hugo   39 juin  22 15:24 [13] shallow -> ../../.repo/projects/bionic.git/shallow
lrwxrwxrwx 1 hugo hugo   47 juin  22 15:24 [14] svn -> ../../.repo/project-objects/aosp/bionic.git/svn

另一个有趣的事情是 repo sync 中的两个步骤:

  • 第一个是fetch,期间会把Git对象从服务器下载到.repo/project-objects

  • 第二个是检出阶段,文件从 .repo/project-objects 复制到工作目录

这意味着如果你删除除 .repo 之外的所有目录并再次同步,获取阶段将非常快(取决于远程上的新修改)并且回购同步将主要复制到结帐阶段的工作目录。