Repo

MuYusen 于 2020-01-05 发布 本文总阅读量

Repo

Android 使用 Git 作为代码管理工具,开发了 Gerrit 进行代码审核以便更好的对代码进行集中式管理,还开发了 Repo 命令行工具,对 Git 部分命令封装,将百多个 Git 库有效的进行组织。

清单库

所谓的清单库,就是我们为manifest文件单独建的一个库,一个清单库可以包含多个清单文件和多个分支,每个清单文件和分支都有对应的版本。我们就是根据不同的manifest文件来下载不同的代码。

安装repo

在ubuntu中可以通过命令进行repo的安装:

Sudo apt-get install repo

也可以直接下载repo文件,然后将路径配置到环境变量里面。

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

repo help

安装 Repo 后,您可以通过运行以下命令找到最新文档(开头是包含所有命令的摘要):

repo help

您可以通过在 Repo 树中运行以下命令来获取有关某个命令的信息:

repo help <COMMAND>

例如,以下命令会生成 Repo init 参数的说明和选项列表,该参数会在当前目录中初始化 Repo。(要了解详情,请参阅 init。)

repo help init

repo init

Usage

repo init -u URL [OPTIONS]

在当前目录中安装 Repo。这会创建一个 .repo/ 目录,其中包含用于 Repo 源代码和标准 Android 清单文件的 Git 代码库。该 .repo/ 目录中还包含 manifest.xml,这是一个指向 .repo/manifests/ 目录中所选清单的符号链接。

Options:

命令repo init 要完成如下操作:

repo sync

Usage

repo sync [<PROJECT_LIST>]

下载新的更改并更新本地环境中的工作文件。如果您在未使用任何参数的情况下运行 repo sync,则该操作会同步所有项目的文件。 运行 repo sync 后,将出现以下情况:

Option:

repo start

Usage

repo start <BRANCH_NAME> [<PROJECT_LIST>]

从清单中指定的修订版本开始,创建一个新的分支进行开发。

repo diff

Usage

repo diff [<PROJECT_LIST>]

使用 git diff 显示提交与工作树之间的明显更改。

repo prune

Usage

repo prune [<PROJECT_LIST>]

删减(删除)已合并的主题。

repo status

Usage

repo status [<PROJECT_LIST>]

对于每个指定的项目,将工作树与临时区域(索引)以及此分支 (HEAD) 上的最近一次提交进行比较。在这三种状态存在差异之处显示每个文件的摘要行。 要仅查看当前分支的状态,请运行 repo status。系统会按项目列出状态信息。对于项目中的每个文件,系统使用两个字母的代码来表示: 在第一列中,大写字母表示临时区域与上次提交状态之间的不同之处。

字母 含义 说明
- 无更改 HEAD 与索引中相同
A 已添加 不存在于 HEAD 中,但存在于索引中
M 已修改 存在于 HEAD 中,但索引中的文件已修改
D 已删除 存在于 HEAD 中,但不存在于索引中
R 已重命名 不存在于 HEAD 中,但索引中的文件的路径已更改
C 已复制 不存在于 HEAD 中,已从索引中的另一个文件复制
T 模式已更改 HEAD 与索引中的内容相同,但模式已更改
U 未合并 HEAD 与索引之间存在冲突;需要解决方案

在第二列中,小写字母表示工作目录与索引之间的不同之处。

字母 含义 说明
- 新/未知 不存在于索引中,但存在于工作树中
m 已修改 存在于索引中,也存在于工作树中(但已修改)
d 已删除 存在于索引中,不存在于工作树中

repo forall

Usage

repo forall [<PROJECT_LIST>] -c <COMMAND>

在每个项目中运行指定的 shell 命令。通过 repo forall 可使用下列额外的环境变量:

Option: