repo命令参考手册
repo用法的基本形式为:
|
|
可选项在[]中表示,例如许多命令接收一个项目列表作为参数,你可以通过一组名字或者p本地源目录的path来指定项目列表.
help
使用help
命令可以获得最新的帮助文档,由各子命令来组织.
你也可以查看子命令的帮助
init
|
|
在当前目录安装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时,会执行以下操作:
- 如果之前未进行过同步,那么等同于git clone, 所有远程的分支都被复制到本地.
- 如果之前同步过,那么等同于:12git remote updategit rebase origin/<BRANCH>
其中
<branch>
指当前本地目录所有的分支, 如果本地分支没有track远程分支,则不会同步.
- 如果rebase发生冲突, 需要使用git命令来Fix冲突,如
git rebase --continue
.
sync成功之后, 指定项目中的代码更新到最新.
选项:
-d
将指定的项目切换回指定的manifest revision, 当项目处于topic分支,但需要manifest revision时有用
-s
sync到一个已知的良好的build, 由当前manifest中的manifest-server
元素指定.
-f
当某个project同步失败时继续sync
upload
|
|
repo会比较指定项目的本地和远程最新更新,提示你选择尚未提交的项目
选择完成以后,repo会将项目的所有commit上通过HTTPS传到gerrit,你需要设置认证信息.访问此处Password Generator可以生成一对新的username/password对.
当gerrit收到对象数据时, 会将每个commit转换为修改,这样review人员可以对每一处评论. 如果想合并commit,可以在upload前执行git rebase -i
操作.
如果upload时不指定项目列表,它会搜寻所有项目更改.
如果upload之后要更改编辑,可以使用git rebase -i
和git commit --amend
来更新本地commit,之后:
- 确认当前branch是要提交的branch
- 对序列中每个要提交的commit,在括号中输入gerrit修改id
|
|
上传完成后,修改将会有附加的Patch集.
diff
基于git diff, 显示commit和当前工作树的修改.
download
|
|
下载指定的修改并应用到工作目录中.
如download 23823号修改到本地目录platform/framworks/base/
|
|
repo sync会移除通过download检索过的修改, 你可也以切换远程分支git checkout m/master
从Gerrit看到修改到用户可以下载,是有一小段延迟的,因为冗余备份的缘故.
forall
|
|
在指定的项目中逐个执行<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
|
|
修剪/删除已经合并的topic
start
|
|
从manifest中指定的revision创建一个新分支
<BRANCH_NAME>
应该是对该分支将要做的修改的简短描述,如果不确定,应该填入分支名字。
<PROJECT_LIST>
指定哪些项目将参与此topic分支
.
是当前工作目录所有项目的简写
status
|
|
将当前工作树与列表中的每个项目的HEAD所在进行比较,并以行概要的形式打印每个文件的不同。
如果只打印当前项目的diff信息,直接运行repo status