repo init和repo sync实际上做了什么?

Pol*_*Bug 24 android repository android-source

我在Android Enthusiasts上发布了这个问题,但认为这是一个错误的地方,所以我从那里删除了它,并在这里"再次"询问它.


这是一个noob问题,请原谅我,但我只想清楚地理解基本概念.阅读repo帮助和Google的repo命令参考页面并没有太多启发.我从谷歌的参考页面了解了一些内容,但我仍需要更多的澄清.

按照如何下载android源码的说明,我在Ubuntu shell上执行了这两个命令:(我已经关注了环境的所有先决条件.)

~/android4.2.2$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1.2
~/android4.2.2$ repo sync -j4
Run Code Online (Sandbox Code Playgroud)

在等待半天的回购完成下载之后,我最终在android4.2.2目录中下载了19G的下载资料.那究竟发生了什么,以及为什么当谷歌说我只应该期待大约8G的源文件时它达到19G?

ozb*_*bek 38

repo是一个python包装器脚本git,其Google Source 页面将其定义为

repo - Multiple Git Repository Tool

  1. repo init命令初始化当前目录中的repo.也就是说,它会下载最新的repo源和一个manifest.xml描述git存储库目录结构的文件,并将所有这些存储.repo在当前目录的子目录中.在您的情况下,您使用了一个可选-b参数,用于选择要结帐的分支.默认情况下(即,-b不使用参数时),使用master分支.

  2. repo sync将工作树更新到最新版本.也就是说,它将本地项目目录与清单文件中指定的远程存储库同步.如果尚不存在本地项目,它将从远程存储库克隆新的本地目录,并设置清单中指定的跟踪分支.如果本地项目已存在,它将更新远程分支并在新远程更改之上重新定义任何新的本地更改.-j参数用于设置要执行的并行作业数.默认值可以在清单中定义,也可以在命令行中覆盖,就像在您的情况下一样.

当谷歌说我应该只期待大约8G的源文件时,为什么它达到19G?

那应该是因为除了源文件之外,你将从时间开始获得Android的所有历史记录:)

希望这可以帮助.

  • @PolyBug:您可以使用`--shallow`选项来"repo init"来创建一个只包含每个git的有限历史的浅克隆.这显然破坏了进行源代码历史取证的能力,并了解如何以及何时引入更改(以及由谁引入). (4认同)
  • @PolyBug,如果你不需要源代码更改历史记录和`repo/git`提供的其他功能,你可以删除`.repo /`文件夹(以及项目文件夹中的`.git /`文件夹). (2认同)