Repo 介绍

Repo是一个用Python语言开发的命令工作 ,可以更文件地进行多版本库的管理。Repo是对Git进行了一定的封装,简化了对多个Git版本库的管理。对于repo管理的任何一个版本库,都需要使用Git命令进行操作。

Repo的使用过程大致如下:

  1. 运行repo init命令,克隆Android的一个清单库。这个清单库是通过XML技术建立的版本库清单。
  2. 清单库中的manifest.xml文件,列出了200多个版本库的克隆方式。包括版本库的地址和工作区地址的对应关系,以及分支的对应关系。
  3. 运行repo sync命令,开始同步,即分别克隆这200多个版本库到本地的工作区中。
  4. 同时对200多个版本库执行切换分支操作,切换到某个分支。

Repo和清单库的初始化

  • 建立一个工作目录,在工作目录中执行repo init -u <url>,完成repo完整的下载及项目清单版本库(manifest.git)的下载。
  • 命令repo init要完成如下操作:
  • 完成repo这一工作的完整下载,因为在~/bin/下是repo不过是repo的引导程序。
  • 克隆android的清单库manifest.git(地址来自于-u参数)。
  • 克隆的清单库拉于.repo/manifest.git中,本地克隆到.repo/manifests。清单文件.repo/manifest.xml只是符号链接,它指向.repo/manifests/default.xml。
  • 询问用户的姓名和邮件地址,如果和Git默认的用户名、邮件地址不同,则记录在.repo/manifest.git库的config文件中
  • 如果不想用默认的URL地址获取repo,可以在repo init子命令中加–repo-url参数指定repo的版本库地址。

Repo的命令集

每一个repo子命令都可以通过下面的命令获得帮助:

repo help <command>

repo init命令

repo init子命令主要完成检出清单版本库(manifest.git),以及配置Git用户名和邮件地址的工作。

repo sync命令

repo sync子命令用于参照清单文件克隆可同步版本库。如果某个项目版本库尚不存在,则执行repo sync命令相当于执行git clone。如果项目版本库已经存在,则相当于执行下面的两个命令:

  • git remote update:相当于对每一个remote源执行fetch操作。
  • git rebase origin/branch:针对当前分支的跟踪分支执行rebase操作。

repo start命令

repo start子命令实际上是对git checkout -b命令的封装。为指定的项目或所有项目(若使用-all参数),以清单文件中为项目认定的分支或里程碑为基础,创建特性分支。特性分支的名称由命令的第一个参数指定。

repo start <newbranchname> [--all | <project>…]

repo status命令

repo status子命令实际上是对git diff-index、git diff-files命令的封装,同时显示暂存区的状态和本地文件修改的状态。

repo status [<project>…]

repo checkout命令

repo checkout子命令实际上是对git checkout命令的封装。检出之前由repo start创建的分支。

repo checkout <branchname> [<project>…]

repo branches命令

repo branches读取各个项目的分支列表并汇总显示。

repo branches [<project>…]

repo upload命令

repo upload相当于git push,但是又有很大的不同。执行repo upload不是将版本库改动推送到克隆时的远程服务器,而是推送到代码审查服务器(Gerrit)的特殊引用上。代码审核服务器会对推送的提交进行特处理,将新的提交显示为一个待审核的修改集,并进入代码审查流程。只有当审核通过后,才会合并到正式的版本库中。

用法如下:

repo upload [--re --cc] [<project>]...

参数:

-h, --help	显示帮助信息。
-t		发送本地分支名称到Gerrit代码审核服务器。
--re=REVIEWERS, --reviewers=REVIEWERS
                要求由指定的人员进行审核。
-cc=CC	        同时发送通知到如下邮件地址。

如果发现上传后的代码有问题想重新修改,可以在本地继续修改代码,用git add把修改内容加到暂存区,用git commit –amend修改上一次提交,再用repo upload重新上传修订集。这样上传后不会产生新的提交,而是会在原有的提交中新加一个修订集。

repo download命令

repo download命令主要用于代码审核者下载和评估提交的修订。使用repo download命令实际上就是用git fetch获取到对应项目的refs/changes/<changeid>/patchset>引用,并自动切换到对应的引用上。

repo download {project change [/patchset]}…

repo prune命令

repo prune子命令实际上是对git branch -d命令封装,该命令用于扫描项目的各个分支,并删除已经合并的分支。

repo prune [<project>…]

repo 遍历整个项目

liangjiong.zhou 2013/12/31 03:12

repo forall 可以用来遍历所有git仓库。

repo forall <span class="re5">-c</span> <span class="kw3">command</span>

例:

$ repo forall <span class="re5">-c</span> <span class="kw2">git status</span>      <span class="co0">#等同 repo status</span>
$ repo forall <span class="re5">-c</span> <span class="kw2">git clean</span> <span class="re5">-dxf</span>  <span class="co0">#清除整个repo</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值