repo 是git的管理工具

repo manifest.xml 文件结构:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>  <remote  name="shift"  fetch="git://git.mygit.com/" />  <default revision="kk-shift"  remote="shift"  sync-j="1" />  <project path="packages/shift/VideoPlayer" name="platform/packages/shift/VideoPlayer" />  <include name="another_manifest.xml" />
</manifest>
  1. manifest
    这个是配置的顶层元素,即根标志

  2. remote
    name:在每一个.git/config文件的remote项中用到这个name,即表示每个git的远程服务器的名字(这个名字很关键,如果多个remote属性的话,default属性中需要指定default remote)。git pull、get fetch的时候会用到这个remote name。
    alias :可以覆盖之前定义的remote name,name必须是固定的,但是alias可以不同,可以用来指向不同的remote url
    fetch :所有git url真正路径的前缀,所有git 的project name加上这个前缀,就是git url的真正路径
    review :指定Gerrit的服务器名,用于repo upload操作。如果没有指定,则repo upload没有效果

fetch =“ssh:10.168.100.100”

  1. default
    设定所有projects的默认属性值,如果在project元素里没有指定一个属性,则使用default元素的属性值。
    remote :远程服务器的名字(上面remote属性中提到过,多个remote的时候需要指定default remote,就是这里设置了)
    revision :所有git的默认branch,后面project没有特殊指出revision的话,就用这个branch
    sync_j : 在repo sync中默认并行的数目
    sync_c :如果设置为true,则只同步指定的分支(revision 属性指定),而不是所有的ref内容
    sync_s : 如果设置为true,则会同步git的子项目

  2. manifest-server
    它的url属性用于指定manifest服务的URL,通常是一个XML RPC 服务
    它要支持一下RPC方法:
    GetApprovedManifest(branch, target) :返回一个manifest用于指示所有projects的分支和编译目标。
    target参数来自环境变量TARGET_PRODUCT和TARGET_BUILD_VARIANT,组成$TARGET_PRODUCT-$TARGET_BUILD_VARIANT
    GetManifest(tag) :返回指定tag的manifest

  3. project
    需要clone的单独git
    name :git 的名称,用于生成git url。URL格式是:${remote fetch}/${project name}.git 其中的 fetch就是上面提到的remote 中的fetch元素,name 就是此处的name
    path :clone到本地的git的工作目录,如果没有配置的话,跟name一样
    remote :定义remote name,如果没有定义的话就用default中定义的remote name
    revision :指定需要获取的git提交点,可以定义成固定的branch,或者是明确的commit 哈希值
    groups :列出project所属的组,以空格或者逗号分隔多个组名。所有的project都自动属于"all"组。每一个project自动属于
    name:‘name’ 和path:'path’组。例如,它自动属于default, name:monkeys, and path:barrel-of组。如果一个project属于notdefault组,则,repo sync时不会下载
    sync_c :如果设置为true,则只同步指定的分支(revision 属性指定),而不是所有的ref内容。
    sync_s : 如果设置为true,则会同步git的子项目
    upstream :在哪个git分支可以找到一个SHA1。用于同步revision锁定的manifest(-c 模式)。该模式可以避免同步整个ref空间
    annotation :可以有0个或多个annotation,格式是name-value,repo forall命令是会用来定义环境变量

revision可以使用tag
revision="refs/tags/SWITCH_V2.0"
revision="master"
revision="compress"

  1. include(可选)
    通过name属性可以引入另外一个manifest文件(路径相对与当前的manifest.xml 的路径)
    name :另一个需要导入的manifest文件名字
    可以在当前的路径下添加一个another_manifest.xml,这样可以在另一个xml中添加或删除project

  2. remove-project
    从内部的manifest表中删除指定的project。经常用于本地的manifest文件,用户可以替换一个project的定义


key文件

repo init -u ssh://$1@10.192.168.13/home/git_repo/xxx/manifest.git -m test_proj.xml
repo syncrepo start master ./test_proj/pcie/bridge/
repo start pcie2axilite ./test_proj/pcie/bridge/
repo start refs/tags/SWITCH_V2.0 ./test_proj/pcie/switch/
repo start master ./test_proj/pcie/opb_ram/
repo start pcie ./test_proj/common/ip_vup/
repo start master ./test_proj/common/meter/

repo init

repo init -u ssh://ppgerrit.com/Mstar648/manifest.git -b 648_cultraview -m ppos4.5.0_cultraview.xml
repo init其中:

-u:指定一个URL,其连接到一个manifest仓库
-b:选择manifest仓库中的一个特殊分支
-m:在manifest仓库中选择一个xml文件

repo init要完成如下操作:

完成repo工具的完整下载,执行的repo脚本只是引导程序
clone清单库manifest.git (地址是-u后面的参数)
clone的清单库位于manifest.git中,clone到本地.repo/manifest中,.repo/manifest.xml只是符号链接,它指向的是.repo/manifests/default.xml
如果manifest中有多个xml文件,repo init可以任意选择其中一个,默认选择的是default.xml。
上面的拉取代码示例选择的是ppos4.5.0_cultraview.xml里面的配置,那么.repo/manifest.xml指向的是.repo/manifests/ppos4.5.0_cultraview.xml

repo sync

执行了repo init 命令后,我们需要执行如下命令同步代码:
repo sync
参照清单文件.repo/manifest.xml克隆并同步版本库。如果项目版本库不存在,则执行repo sync命令相当于执行git clone;如果项目版本库存在,则相当于执行下面两条指令:

git remote update

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

git rebase origin/branch

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

repo start

repo start 的实质就是对git checkout -b 的封装,可以为单个项目或所有项目以清单文件中已设定的分支为基础,在本地创建新的分支。

repo start 与 git checkout -b 的区别:

  • repo start 是在清单文件设定的分支基础上创建新的分支
  • git checkout -b 是在当前所在分支的基础上创建新的分支

如果清单文件中设定的分支是remoteBranchName,创建新的分支localBranchName。

为单个项目创建localBranchName分支的命令如下:

repo start localBranchName 项目绝对路径

为所有项目创建localBranchName分支的命令如下:

repo start localBranchName --all


Reference:

repo学习总结

repo中manifest解析相关推荐

  1. JAVA方法调用中的解析与分派

    JAVA方法调用中的解析与分派 本文算是<深入理解JVM>的读书笔记,参考书中的相关代码示例,从字节码指令角度看看解析与分派的区别. 方法调用,其实就是要回答一个问题:JVM在执行一个方法 ...

  2. Oracle中SQL解析的流程

    Oracle中SQL解析的主要流程: 我们说的游标概念比较复杂,它可以是客户端程序中的游标,服务进程中的私有游标,以及服务器端共享池里的共享游标.假设一个游标被打开了,一般来说它的共享游标信息(包括执 ...

  3. iOS中XML解析汇总

    在时间上TBXML占优,libxml2支持了边下载边解析. 来源:http://www.codeios.com/forum.php?mod=viewthread&tid=9880&hi ...

  4. Android中怎获取json,Android应用中如何解析获取的json数据

    Android应用中如何解析获取的json数据 发布时间:2020-11-24 17:10:08 来源:亿速云 阅读:107 作者:Leah 这篇文章将为大家详细讲解有关Android应用中如何解析获 ...

  5. linux源码文件名,Linux中文件名解析处理源码分析

    Linux中文件名解析处理源码分析 前言 Linux中对一个文件进行操作的时候,一件很重要的事情是对文件名进行解析处理,并且找到对应文件的inode对象,然后创建表示文件的file对象.在此,对文件名 ...

  6. iOS中XML解析 (二) libxml2(实例:打印xml内容及存储到数组)

    关联:iOS中XML解析 (一) TBXML (实例:打印xml内容及存储到数组) 关于libxml库的基本使用,在http://xmlsoft.org/网上有文档. 准备工作: project=&g ...

  7. iOS中XML解析 (一) TBXML (实例:打印xml内容及存储到数组)

    关联:iOS中XML解析 (二) libxml2(实例:打印xml内容及存储到数组) 在时间上TBXML占优,libxml2支持了边下载边解析. 来源:http://www.codeios.com/f ...

  8. 使用Maven命令安装jar包到repo中

    项目中可能会碰到很多jar包,使用maven update不能更新,或者jar包是拷贝过来,不能编译的情况.此时就需要手动使用命令行安装. 例如Demo项目中提示缺少四个jar包,但是在repo中已经 ...

  9. Java面试poi中excel版本大小_java 中 poi解析Excel文件版本问题解决办法

    java 中 poi解析Excel文件版本问题解决办法 发布时间:2020-10-02 03:46:15 来源:脚本之家 阅读:91 作者:程诺 poi解析Excel文件版本问题解决办法 poi解析E ...

最新文章

  1. 制作win2000能用的 schtasks.exe
  2. IE 8 中自定义自己的 Search Provider (搜索提供程序)
  3. 百练OJ:2760:数字三角形
  4. 计算机io工作方式,QEMU/KVM和VirtIO工作模式
  5. covid 19如何重塑美国科技公司的工作文化
  6. ubuntu中的tftp用法
  7. pythonjava哪个好学_Python和Java哪个好学?没基础学python
  8. SpringBoot配置模板引擎之视图解析器失效问题排查
  9. mongodb count 导致不正确的数量(mongodb count 一个坑)
  10. Symbian 项目
  11. 『中文、英文词频统计分析软件』免费工具分享
  12. 【JetBrain】JetBrain系列软件设置背景图
  13. 个人开发作品分享:iTab新标签页
  14. 对图片或者PDF流文件加水印
  15. 南方电网两栖机器人_南方电网首个作业级水下机器人落户海南 为海底电缆“护驾”...
  16. 使用Vitamio插件显示花屏
  17. TransactionDefinition
  18. 【basalt】(一)3D点参数化
  19. 2022开年第一个爆款凭什么是山东蓝翔?如何实现破圈传播?
  20. 1一1剖面图方向_圆梦蓝天白云,补2019款1宝马1系提车+Alcantara方向盘作业

热门文章

  1. PADS Logic中单个器件的PCB封装应该怎么处理呢?
  2. MATLABGPU渲染曲线
  3. 事业单位高级工计算机操作员,事业单位高级工可以拿到多少工资?
  4. ArcGIS 从DSM中提取高程点
  5. jQuery添加元素
  6. Mxnet (20): 循环神经网络(RNN)下
  7. 一个屌丝程序猿的人生(八十一)
  8. 【Java Web】jsp与jspf文件的区别
  9. 如切如磋,如琢如磨 - 南怀瑾
  10. PROFIBUS远程IO在加工车间的应用