概述

Repo:是对 Git 构成补充的 Google 代码库管理工具。

Repo 可以在必要时整合多个 Git 代码库,将相关内容上传到 Gerrit 修订版本控制系统,并自动执行 Android 开发工作流程的部分环节。

Repo 启动器会提供一个 Python 脚本,该脚本可以初始化检出,并可以下载第二部分,即完整的 Repo 工具。完整的 Repo 工具包含在 Android 源代码检出中。该工具默认位于 $SRCDIR/.repo/repo/... 中,它可以从下载的 Repo 启动器接收转发的命令。

Repo 使用清单文件将 Git 项目汇总到 Android 超级项目中。您可以将 repo 命令(这是一个可执行的 Python 脚本)放在路径中的任何位置。使用 Android 源代码文件时,您可以使用 Repo 执行跨网络操作,例如使用一个 Repo 工作目录。

安装

安装有两种方式,一种是基于操作系统安装。以Ubuntu为例,可以在系统中直接执行

  sudo apt-get updatesudo apt-get install repo

安装成功后可以执行 version 查看版本

repo version

另外一种方式则是,从服务器上下载应用程序安装

wget 'https://storage.googleapis.com/git-repo-downloads/repo' -P /tmp/
sudo cp /tmp/repo /usr/local/bin/repo
sudo chmod +x /usr/local/bin/repo

也可以从国内服务器下载

echo "export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'" >> ~/.bashrc
source ~/.bashrc
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o /tmp/repo
sudo cp /tmp/repo /usr/local/bin/repo
sudo chmod +x /usr/local/bin/repo

使用方法

repo 命令格式

repo <COMMAND> <OPTIONS>

重要命令

help

repo安装完成后,可以使用help命令查看其他命令的使用方法

repo help <COMMAND>

例如查看init 的使用方法

repo help init

init

$ repo init -u <URL> [<OPTIONS>]

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

选项:

  • -u:指定要从中检索清单代码库的网址。您可以在 https://android.googlesource.com/platform/manifest 中找到常见清单
  • -m:在代码库中选择清单文件。如果未选择任何清单名称,则会默认选择 default.xml。
  • -b:指定修订版本,即特定的清单分支。

sync

repo sync [<PROJECT_LIST>]

执行完‘repo sync’之后就可以在目录中执行‘repo sync’进行代码同步,这部操作类似git clone 。

repo sync 运行成功后,指定项目中的代码会与远程代码库中的代码保持同步。

  • -d:将指定项目切换回清单修订版本。如果项目当前属于某个主题分支,但只是临时需要清单修订版本,则此选项会有所帮助。
  • -s:同步到当前清单中清单服务器元素指定的一个已知的良好版本。
  • -f:即使某个项目同步失败,系统也会继续同步其他项目。
    • j : 使用多线程进行同步,默认4线程
  • -c: 只同步指定分支,默认同步所有分支。

其他命令

  • upload
repo upload [<PROJECT_LIST>]

上传代码,这个上传代码并不是直接上传到服务器中,而是先上传到gerrit上进行review进行审核,审核通过之后才可以上传。

greeit服务器地址是在mainifests中指定的,.repo/manifest.xml

<remote name="aosp"
fetch=".."
review="https://android-review.googlesource.com/" />

Gerrit说明:

  • Reviewer:代码审阅人员可以是多个,是需要人为指定的。Gerrit提供网页的操作,可以填选Reviewer。当有多个git库的改动提交时,为了避免在网页上频繁的填选Reviewer这种重复劳动, upload提供了–re, –reviewer参数,在命令行一次性指定Reviewer

  • Commit-ID:git为了标识每个提交,引入了Commit-ID,是一个SHA-1值,针对当次提交内容的一个Checksum,可以用于验证提交内容的完整性

  • Change-ID:Gerrit针对每一个Review任务,引入了一个Change-ID,每一个提交上传到Gerrit,都会对应到一个Change-ID, 为了区分于Commit-ID,Gerrit设定Change-ID都是以大写字母 “I” 打头的。 Change-ID与Commit-ID并非一一对应的,每一个Commit-ID都会关联到一个Change-ID,但Change-ID可以关联到多个Commit-ID

  • Patch-Set:当前需要Review的改动内容。一个Change-ID关联多个Commit-ID,就是通过Patch-Set来表现的,当通过git commit --amend命令修正上一次的提交并上传时, Commit-ID已经发生了变化,但仍可以保持Change-ID不变,这样,在Gerrit原来的Review任务下,就会出现新的Patch-Set。修正多少次,就会出现多少个Patch-Set, 可以理解,只有最后一次修正才是我们想要的结果,所以,在所有的Patch-Set中,只有最新的一个是真正有用的,能够合并的。

  • diff

repo diff [<PROJECT_LIST>]

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

  • download
repo download <TARGET> <CHANGE>

upload是把改动内容提交到Gerrit,download是从Gerrit下载改动。与upload一样,download命令也是配合Gerrit使用的。

例如,要将更改 23823 下载到您的平台/编译目录,请运行以下命令:

$ repo download platform/build 23823

repo sync 应该可以有效移除通过 repo download 检索到的任何提交。或者,您可以将远程分支检出,例如 git checkout m/master

  • forall
repo forall [<PROJECT_LIST>] -c <COMMAND>
  • status
$ repo status [<PROJECT_LIST>]

status用于查看多个git库的状态。实际上,是对git status命令的封装。

实际操作

下面以下载rockpi4 的安卓源码为例

init

创建rockpi 文件夹,执行repo init 命令

$ mkdir rockpi && cd rockpi
$ repo init -u https://github.com/radxa/manifests.git \-b rockchip-android-10 -m rockchip-q-release.xml
# -u 指定要从中检索清单代码库的网址
# -b 在代码库中选择清单文件。如果未选择任何清单名称,则会默认选择 default.xml。
# -m 指定修订版本,即特定的清单分支

执行完命令之后,就会在当前文件夹中生成一个.repo 的文件夹。

$ repo init -u https://github.com/radxa/manifests.git \-b rockchip-android-10 \-m rockchip-q-release.xml

sync

repo sync -d --no-tags -j4
# -d:将指定项目切换回清单修订版本
# -j: 指定线程

注意:repo 现在已经不支持Python2 ,所以在使用repo时应将系统的Python改为python3

执行报错:

“gnutls_handshake() failed: Error in the pull function”

解决方法:

sudo apt-get -y install build-essential nghttp2 libnghttp2-dev libssl-dev

android 源码管理工具repo相关推荐

  1. 配置源码管理工具(2)

    源码管理是开发中最重要的事情之一,在vs.net里我们通常采用vss进行版本控制,在Eclipse里看帖子说用svn的比例很大,和IDE的集成性也很好. 1:服务器部署 下载地址是:http://su ...

  2. Android源码阅读工具AndroidXRef使用说明

    (62条消息) AndroidXRef使用说明_n_fly的博客-CSDN博客 http://www.aospxref.com AndroidXRef (81条消息) 官方版Android源码查看工具 ...

  3. Android源码分析工具及方法

    转载自:http://bbs.pediy.com/showthread.php?t=183278 标 题: [原创]Android源码分析工具及方法 作 者: MindMac 时 间: 2014-01 ...

  4. Android 源码分析工具

    2019独角兽企业重金招聘Python工程师标准>>> 标 题: [原创]Android源码分析工具及方法 作 者: MindMac 时 间: 2014-01-02,09:32:35 ...

  5. 0918 iOS10兼容/iOS系统过高或过低配置包/混合引擎的在线视频连麦互动直播/源码管理工具/Xcode8插件升级/导航栏渐变

    1 兼容iOS 10 资料整理笔记 http://www.jianshu.com/p/42e506998082 iOS developerDiskImage 这是由于真机系统过高或者过低,Xcode中 ...

  6. 源码管理工具VSN的安装与使用--eclipse

    Eclipse下的源码管理可以使用CVS(http://www.nongnu.org/cvs/)或者SubVersion(http://subversion.apache.org/).CVS出现的比较 ...

  7. 【转】Visual Studio团队资源管理器 Git 源码管理工具简单入门

    1.1 环境 Visual Studio + GitLab (其他版本同理) 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本地版本库,相当于(Fetch+Me ...

  8. 使用Android Studio搭建Android源码查看工具

    参考: http://www.jianshu.com/p/fb16fa459acf http://www.jianshu.com/p/16e30c84caa4 http://www.jianshu.c ...

  9. java代码管理工具_java源码管理与版本控制工具,图文详解

    近些年社会科学技术水平的发展越来越快速了,这也促进了人们对于新技术新知识的学习.尤其是java的应用也越来越广泛.今天就来为大家介绍一下,java源码管理与版本控制工具,一起来了解一下吧. java项 ...

最新文章

  1. hdu 5059 判断数字表示方式以及范围合法(int型之内)
  2. 调整/home和/root空间容量
  3. 作业收缴系统使用手册(自写开源小系统)
  4. 【postgresql初始化失败】initdb: invalid locale settings; check LANG and LC_* environment variables(之二)
  5. C++标准输入流、输出流以及文件流
  6. $.AjaxFileUpload is not a function
  7. spring启动执行_执行器的Spring启动和安全性事件
  8. android复位机器人图片_Universal-Image-Loader 图片异步加载类库还不熟?
  9. 输入2个正整数lower和upper(lower_题库 | 华为研发工程师编程题型介绍及解析 第 2 期...
  10. python推荐系统算法朴素贝叶斯_Java实现的朴素贝叶斯算法示例
  11. c4dr20怎么安装oc渲染器怎么安装_[C4D插件] OTOY正式发布OC渲染器OctaneRender4 For C4D 支持R16-R20 Demo版已开放下载(Win)...
  12. Python-数据分析-常用检验-2-相关系数检验
  13. Android 给透明png图片添加白色底色(修改像素点的形式)
  14. windows上装Ubuntu
  15. c语言 proteus 延迟2秒_几种延时的汇编执行代码对比与总结
  16. 在文件选择打开方式里,无法添加.exe程序怎么解决
  17. SC系列 (SC-16S) 低频率小型SMD石英晶振 SC-16S 32.768KHZ 12.5PF/20PPM
  18. openssl之C++实现私(公)钥生成、转换
  19. matplotlib 进阶之Artist tutorial(如何操作Atrist和定制)
  20. 2021: E2E-VLP: End-to-End Vision-Language Pre-training Enhanced by Visual Learning

热门文章

  1. EmailCamel为外贸工控行业提供外贸开发信邮件群发解决方案!
  2. easyui filebox 浏览图片(亲测有效)
  3. scrcpy-手机与电脑投屏神器
  4. 2020-11-21 CentOS8下载
  5. 游戏异常测试思路和常见测试点
  6. Flutter Text 去掉黄色下划线
  7. U.2接口和M.2接口有什么区别
  8. Comparator接口
  9. java实现即时消息提醒方法
  10. 庄子·内篇·养生主第三