Git管理单独的模块,而repo管理所有的Git库,将多个Git库组合在一起,形成一个完整的大版本
repo start <topic_name>
开启一个新的主题,其实就是每个Project都新建一个分支
repo init -u <url> [OPTIONS]
在当前目录下初始化repo,会在当前目录生生成一个.repo目录,像Git Project下的.git一样,-u指定url,可以加参数-m指定manifest文件,默认是 default.xml,.repo/manifests保存manifest文件。.repo/projects下有所有的project的数据信 息,repo是一系列git project的集合,每个git project下的.git目录中的refs等目录都是链接到.repo/manifests下的。
-
-u:指定manifests这个远程git库的URL,manifests库是整个项目的清单。默认情况,这个git库只包含了default.xml一个文件,其内容可以参见Android的样本
-
-m, –manifest-name:指定所需要的manifests库中的清单文件。默认情况下,会使用maniftests/default.xml
-
-b, –manifest-branch:指定manifest.xml文件中的一个版本,,也就是俗称的“分支”
.repo
├── manifests # 一个git库,包含default.xml文件,用于描述repo所管理的git库的信息
├── manifests.git # manifest这个git库的实体,manifest/.git目录下的所有文件都会链接到该目录
├── manifest.xml # manifests/default.xml的一个软链接
└── repo # 一个git库,包含repo运行的所有脚本
执行repo命令时,可以通过--trace
参数,来看操作过程。
repo manifest
可以根据当前各Project的版本信息生成一个manifest文件
repo sync [PROJECT1...PROJECTN]
同步Code
repo status
查看本地所有Project的修改,在每个修改的文件前有两个字符,第一个字符表示暂存区的状态
work tree 本地
index缓存
HEAD本地服务器
第二个字符表示工作区的状态
repo prune <topic>
删除已经merge的分支
repo abandon <topic>
删除分支,无论是否merged
repo branch或repo branches
查看所有分支
repo diff
查看修改
repo upload
上传本地提交至服务器
repo forall [PROJECT_LIST]-c COMMAND
对指定的Project列表或所有Project执行命令COMMAND,加上-p参数可打印出Project的路径
repo forall -c 'git reset --hard HEAD;git clean -df;git rebase --abort'
这个命令可以撤销整个工程的本地修改
使用实践
Android推荐的开发流程是:
- repo init初始化工程,指定待下载的分支
- repo sync下载代码
- repo start将本地git库切换到开发分支(TOPIC BRANCH)
- 在本地进行修改,验证后,提交到本地
- repo upload上传到服务器,等待review