repo
1.1、repo简介
是什么 ?:a command line tool built on top of git which helps manage many git repositories, does the uploads to revision control systems, and automates parts of the development workflow. Repo is not meant to replace Git, only to make it easier to work with Git.
开发语言:Python
官方主页:https://android.googlesource.com/tools/repo
源码仓库:
used by:AOSP
1.2、通过包管理器安装repo
操作系统包管理器安装命令
Windowsscoopscoop install repo
WindowsChocolateychoco install -y repo
macOSHomeBrewbrew install repo
GNU/LinuxLinuxBrewbrew install repo
aptsudo apt-get install -y repo
CentOSyumsudo yum install -y repo
dnfsudo dnf install -y repo
openSUSEzyppersudo zypper install -y repo
Alpine Linuxapksudo apk add repo

Arch Linux

ArcoLinux

Manjaro Linux

pacmansudo pacman -Syyu --noconfirm
sudo pacman -S    --noconfirm repo
Gentoo LinuxPortagesudo emerge repo
1.3、通用方式安装repo

step1、安装依赖

下载时cURL
运行时gitPython

step2、使用curl命令下载repo脚本

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > /usr/local/bin/repo

step3、给repo脚本设置执行权限

chmod a+x /usr/local/bin/repo

step4、将repo脚本所在目录加入PATH环境变量中

export PATH=$PATH:/usr/local/bin

step5、设置REPO_URL环境变量的值

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

这是做的原因:repo脚本在运行过程中会尝试更新自己,更新地址优先使用REPO_URL环境变量的值,如果没有此值,会从https://gerrit.googlesource.com/git-repo更新。

1.4、配置git

在使用repo命令的过程中,可能会提示:请您输入邮箱号用户名。这是git提示我们的,我们事先设置好,如下:

git config --global user.email 792793182@qq.com
git config --global user.name leleliu008
1.5、repo命令 

repo命令的使用格式:

repo help <COMMAND>
repo init [ARGUMENT]...
repo sync [ARGUMENT]...
1.5.1、repo help <COMMAND>

查看COMMAND的使用帮助。

示例:

repo help init
1.5.2、repo init [ARGUMENT]...

该命令的作用是下载源码的清单文件manifest.xml)。

1.5.2.1、-u <URL>

uurl的首字母。该参数用于指定清单文件manifest.xml)的下载地址,常用的URL有:

  • https://android.googlesource.com/platform/manifest
  • https://aosp.tuna.tsinghua.edu.cn/platform/manifest

示例:

mkdir -p ~/AOSP/master
cd ~/AOSP/master
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
1.5.2.2、-b <BRANCH>

bbranch的首字母。此参数用于指定清单文件manifest.xml)的分支,关于分支名称,可以查看

注意:如果没有指定-b参数,那么默认会使用master分支。

示例:

mkdir -p ~/AOSP/android-6.0.1_r78
cd ~/AOSP/android-6.0.1_r78
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

清单文件manifest.xml)下载的很快,这一步大概有几分钟就完成了。

repo init执行成功后,会在~/AOSP目录中生成一个.repo的目录,此目录为隐藏属性的文件, 我们可以在终端中使用ls -a命令查看此目录,此目录中保存了将要下载的源代码的相关信息。

~/AOSP/.repo/manifest.xml文件就是清单文件。其他都是一些配置文件。

1.5.2.3、-q

qquite的首字母。此参数表示没有任何的日志输出。

1.5.3、repo sync

repo sync命令是根据${SOURCE_DIR}/.repo/manifest.xml清单文件同步指定的代码到本地。

repo sync命令运行的过程中,如果出现中断,只要重新执行repo sync就可以了。

第一次运行repo sync,则这个命令相当于git clone,会把repository中的所有内容都拷贝到本地。

第二次运行repo sync,则相当于git remote update; git rebase origin/branch

repo sync命令会更新.repo下面的文件。如果在merge的过程中出现冲突,这需要手动运行git rebase –continue

repo sync命令还可以重新校对下载的源码,若是有问题或遗漏了一些文件会重新下载,并从.repo目录中导出到实际源码中。

若是出现以下信息,表示代码下载完成:

Fetching projects: 100% (166/166), done.
Syncing work tree: 100% (165/165), done.
1.6、repo命令综合使用示例

需求:下载build-tools的源代码并编译它。

step1、创建一个存放源代码的目录

mkdir -p ~/AOSP/build-tools

step2、进入刚刚创建的目录

cd ~/AOSP/build-tools

step3、下载清单文件

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b build-tools

step4、查看下载的内容

step5、同步清单文件中配置的代码

repo sync -j4

step6、查看同步完的目录结构

step7、编译

prebuilts/build-tools/build-prebuilts.sh