repo使用小结

可能出现的错误:

fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
如果出现这个错误 则unset下http 和https的代理
unset HTTP_PROXY
unset HTTPS_PROXY





1.下载repo: 

  使用下面命令,具体版本号参考前面网页中显示的最新版本号。

  curl http://git-repo.googlecode.com/files/repo-1.19 > ~/bin/repo

   修改执行权限 

    chmod a+x ~/bin/repo


2.获取工程repo信息

本地创建一个工程目录,并进去

以下命令下载指定分支(branch)

       repo init -u git://172.16.1.31/manifest.git (git地址) -b master

repo init 作用  下载repo并克隆manifest

Options:

l         -u:指定一个URL,其连接到一个maniest仓库

l         -m:manifest仓库中选择一个xml文件

l         -b:选择一个maniest仓库中的一个特殊的分支

命令repo init 要完成如下操作:

Ø         完成repo工具的完整下载,执行的repo脚本只是引导程序

Ø         克隆清单库manifest.git (地址来自于-u 参数)

Ø         克隆的清单库位于manifest.git中,克隆到本地.repo/manifests.清单.repo/manifest.xml只是符号链接,它指向.repo/manifests/default.xml

Ø         如果manifests中有多个xml文件,repo init 可以任意选择其中一个,默认选择是default.xml

3.下载代码

repo sync  更新代码到最新的版本

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

l         git remote update

相当于对每一个remote源执行了fetch操作

l         git rebase origin/branch

针对当前分支的跟踪分支执行rebase操作。


4.创建并切换本地分支
repo start 

Usage: repo start [--all | ...]

刚克隆下来的代码是没有分支的,repo start实际是对git checkout –b 命令的封装。为指定的项目或所有项目(若使用—all参数,
以清单文件中为设定的分支,创建特性分支。这条指令与git checkout –b 还是有很大的区别的,git checkout –b 是在当前所在的分支的基础上
创建特性分支,而repo start是在清单文件设定分支的基础上创建特性分支。

Options:

  -h, --help  显示帮助信息

  --all      在所有工程中都新建一个分支

例: repo start  stable  --all


5.repo forall

迭代器,可以在所有指定的项目中执行同一个shell指令

      -c command,对所有项目执行一个command命令,这个命令 相当 好用;
      例:repo forall -c git status  只显示每个工程的状态,但是不显示工程名 和repo status


     -p 在输出之前显示项目名称
    例: repo forall -p -c git status  先输出工程名之后,再执行命令


     -v(—verbose) 显示命令错误信息
     -e(—abort-on-errors) 中止如果命令没有成功退出

l         REPO_PROJECT:指定项目的名称
l         REPO_PATH:指定项目在工作区的相对路径
l         REPO_REMOTE:指定项目远程仓库的名称
l         REPO_LREV:指定项目最后一次提交服务器仓库对应的哈希值
l         REPO_RREV:指定项目在克隆时的指定分支,manifest里的revision属性
 另外,如果-c后面所带的shell指令中有上述环境变量,则需要用单引号把shell指令括起来。
例:repo forall –c ’echo $REPO_PROJECT‘  输出工程名


之前git的各种命令都可以在通过这个命令在各个工程中执行。



例 merge(合并多个分支)
把所有项目多切换到master分支,执行以下指令将topic分支合并到master分支
repo forall –p –c git merge topic


          例:本地每个工程都新建一个分支并跟踪远程的一个分支
          repo forall -p -c git checkout -b  abc —track origin/abc

          例:tag(打标签)
          repo forall -p –c git tag crane-stable-1.6

          例:remote(设置远程仓库)
           repo forall -p –c ‘git remote add korg ssh://[email protected]/$REPO_PROJECT.git’

          例:本地每个工程都创建一个git 分支
          repo forall -p –c git branch crane-dev
          repo forall  -p –c git checkout –b crane-dev


例:所有工程中的改动全部回退

repo forall -p -c git reset --hard HEAD



6. repo upload
Usage: repo upload [--re --cc] []...

描述:
     repo upload 命令是用来发送改变到Gerrit 代码审核系统中去。它搜索topic branches(当前话题分支)在本地工程中还未通过review公开,如果多个topic branches存在, repo会打开一个editor(编辑工具)让用户选择那个分支去上传.
     repo upload 搜索在所有工程可以上传的改动在命令行中显示出来,(Projects 参数)工程可以指定名字或者本地工程的相对路径或者绝对路径,如果没有指定,那么会在所有工程中搜索所有的可以上传的改动.
     如果—reviewers 或者 —cc选项被忽略啦,那些邮件会被发送到用户各自的列表中(those emails are added to
the respective list of users),而且电子邮件会被发送给任何新用户.
     —reviewers 指定的必须是已经在代码审核系统中注册过的用户,否则upload会失败


上传修改的代码 ,如果你本地的代码有所修改,那么在运行 repo sync 的时候,会提示你上传修改的代码,所有修改的代码分支会上传到 Gerrit (基于web 的代码review 系统), Gerrit 受到上传的代码,会转换为一个个变更,从而可以让人们来review 修改的代码。 
-t       提交当前分支名到Gerrit代码评审系统
--re=REVIEWERS, --reviewers=REVIEWERS     让指定的人来审核
—cc=CC     同时发送邮件
—br=BRANCH  分支上传
 -d, --draft   如果指定分支,upload as a draft.(像汇票一样上传?)
-D BRANCH, --destination=BRANCH, --dest=BRANCH   上传到指定分支等待审核
--no-verify    Do not run the upload hook.(不运行upload 挂钩)
  --verify              Run the upload hook without prompting.不经过提示就上传挂钩


7.repo list
列出工程和他们项目的目录
Options:

  -h, --help       查看帮助信息  

-f, —fullpath    查看工程的完整路径 

-n, --name-only  查看工程的名字

  -p, --path-only  查看工程路径名字


8.repo info
获取manifest branch 信息,当前分支或者是没合并的分支
Usage: repo info [-dl] [-o [-b]] [...]

Options:

  -h, --help            show this help message and exit 

-d, —diff             显示远程分支中的完整的信息和提交记录 
  -o, —overview         显示所有本地记录的概略  

-b, --current-branch  consider only checked out branches  

-l, --local-only      Disable all remote operations


9.repo help


可以使用repo help 关键词来查看帮助信息,

如:repo help info 


参考文章:

http://blog.csdn.net/sunweizhong1024/article/details/8987494


你可能感兴趣的:(版本管理)