[摘]repo命令参考手册

Android  2024年5月8日 am9:34发布7个月前更新 91es.com站长
89 0 0

前言

本文是摘抄的,主要是需要一些repo的使用。

记录一下,方便自己查阅。

正文

repo用法的基本形式为:

repo <COMMAND> <OPTIONS>

可选项在[]中表示,例如许多命令接收一个项目列表作为参数,你可以通过一组名字或者p本地源目录的path来指定项目列表.

repo sync [<PROJECT0> <PROJECT1> <PROJECTN>]
repo sync [</PATH/TO/PROJECT0> ... </PATH/TO/PROJECTN>]

help

使用help命令可以获得最新的帮助文档,由各子命令来组织.

你也可以查看子命令的帮助

repo help <COMMAND>

init

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

在当前目录安装repo, 将创建一个.repo目录,内含源代码的git仓库和标准android manifest 文件, 同时还有一个manifest.xml文件,指向.repo/manifests/目录中的定manifest. 参数:

-u URL,指定manifest位置

-m` 选择仓库中的manifest文件,缺省为`default.xml

-b 指定revision, 如一个特定的manifest分支.

repo的其它命令需要在.repo的父目录或者某一子目录中执行

sync

repo sync [<PROJECT_LIST>]

下载新更改,并更新本地环境中的工作文件,如果不带参数,将同步所有的项目的所有文件.

当运行repo sync时,会执行以下操作:

  1. 如果之前未进行过同步,那么等同于git clone, 所有远程的分支都被复制到本地.

  2. 如果之前同步过,那么等同于:

    git remote update 
    git rebase origin/<BRANCH>

其中<branch>指当前本地目录所有的分支, 如果本地分支没有track远程分支,则不会同步.

  1. 如果rebase发生冲突, 需要使用git命令来Fix冲突,如git rebase --continue.

sync成功之后, 指定项目中的代码更新到最新.

选项:

-d 将指定的项目切换回指定的manifest revision, 当项目处于topic分支,但需要manifest revision时有用

-s sync到一个已知的良好的build, 由当前manifest中的manifest-server元素指定.

-f 当某个project同步失败时继续sync

upload

repo upload [<PROJECT_LIST>]

repo会比较指定项目的本地和远程最新更新,提示你选择尚未提交的项目

选择完成以后,repo会将项目的所有commit上通过HTTPS传到gerrit,你需要设置认证信息.访问此处Password Generator可以生成一对新的username/password对.

当gerrit收到对象数据时, 会将每个commit转换为修改,这样review人员可以对每一处评论. 如果想合并commit,可以在upload前执行git rebase -i操作.

如果upload时不指定项目列表,它会搜寻所有项目更改.

如果upload之后要更改编辑,可以使用git rebase -igit commit --amend来更新本地commit,之后:

  • 确认当前branch是要提交的branch

  • 对序列中每个要提交的commit,在括号中输入gerrit修改id

# Replacing from branch foo 
[ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
[ 2829 ] ec18b4ba Update proto client to support patch set replacments 
# Insert change numbers in the brackets to add a new patch set.
# To create a new change record, leave the brackets empty.

上传完成后,修改将会有附加的Patch集.

diff

基于git diff, 显示commit和当前工作树的修改

repo diff [<PROJECT_LIST>]

download

repo download <TARGET> <CHANGE>

下载指定的修改并应用到工作目录中.

如download 23823号修改到本地目录platform/framworks/base/

$ repo download platform/build 23823

repo sync会移除通过download检索过的修改, 你可也以切换远程分支git checkout m/master

从Gerrit看到修改到用户可以下载,是有一小段延迟的,因为冗余备份的缘故.

forall

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

在指定的项目中逐个执行<command>, 可以使用以下环境变量

REPO_PROJECT 设置唯一的项目名 REPO_PATH 相对client root的相对路径 REPO_REMOTE manifest中的远程系统名 REPO_LREV manifest中的revision name翻译到本地tracking分支,当需要传递manifest的revision到本地执行的git命令的使用。 REPO_RREV 等于manifest中的revision name。

选项:

-c 需要执行的命令与参数,由/bin/sh解释 -p 在显示执行结果前打印项目headers, 通过bind管道到命令的Stdin , stdout和stderr来实现 -v 显示stderr信息

prune

repo prune [<PROJECT_LIST>]

修剪/删除已经合并的topic

start

repo start <BRANCH_NAME> [<PROJECT_LIST>]

从manifest中指定的revision创建一个新分支

<BRANCH_NAME> 应该是对该分支将要做的修改的简短描述,如果不确定,应该填入分支名字。

<PROJECT_LIST> 指定哪些项目将参与此topic分支

.当前工作目录所有项目的简写

status

repo status [<PROJECT_LIST>]

将当前工作树与列表中的每个项目的HEAD所在进行比较,并以行概要的形式打印每个文件的不同。

如果只打印当前项目的diff信息,直接运行repo status

参考文章

  1. repo命令参考手册

 历史上的今天

  1. 2022: Vim的光标命令(0条评论)
  2. 2018: Source Insight 4.0安装(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

adb查询和改变ContentProvider的值

前言项目中有用ContentProvider存储自定义的属性值,为了方便调试,因此想用adb shell 通过命令改变查看效果。其实之前也记录过相关的,只是没有亲自试验,摘抄文章《[摘]adb命令行查询content-provider -91易搜 - 阅读是一种生活方式 ()》。今天有空,重...

Android设备adb screenrecord录屏简单使用

前言Android测试有些现象无法用语言描述或者描述不清晰,因此会要求测试拍视频或者录屏,方便工程师解决问题。偶尔需要录像,因此这里整理一下adb screenrecord的使用,方便自己查阅和学习。好记性不如烂笔头正文screenrecord 命令规则screenrecord [op...

替换preg_replace

推荐使用 读书导航 极客导航 :125啦极客导航(http://www.91es.com/jike.html)PHP版本升级后preg_replace过期了,虽然都可以用,为了安全考虑,PHP官方推荐使用preg_replace_callback替代。php手册(PHP 4 >= 4.0...

聂鲁达:雨

不,女王最好也不要认出你的面孔,这更甜美这方式,我的爱,远比偶像更甜美,你的头发的重量在我手中,你还记得吗?芒果树的花朵落在你的发间?这些手指不像洁白的花瓣:看看它们,它们像根,它们像石头击中正滑动的蝎子。别害怕,我们正在等待雨的降临,赤裸着,雨,正同样地降临在马努塔拉山上。就...

ls和du的复杂用法

ls 的复杂用法ls -l列出当前木所有文件和文件夹信息ls -l | grep "^-"过滤文件,显示当前目录的文件ls -l | grep "^d"过滤当前文件夹,显示当前目录的文件夹ls -l | grep "^-"| wc -l显示当前目录文件的个数ls -l | gre...

朱自清:春

盼望着,盼望着,东风来了,春天的脚步近了。一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。小草偷偷地从土里钻出来,嫩嫩的,绿绿的。园子里,田野里,瞧去,一大片一大片满是的。坐着,躺着,打两个滚,踢几脚球,赛几趟跑,捉几回迷藏。风轻悄悄的,草软绵绵的。桃树、杏树、梨...