repo的manifest.xml文件全解

manifest.xml 文件结构:

<?xml version="1.0" encoding="UTF-8"?>  

<manifest>  
    <remote name="origin" fetch=".." review="review.source.android.com" />  
    <default revision="master" remote="origin" />
    <project name="project/build" path="build" >  
        <copyfile src="makefile" dest="makefile.mk" />
    </project>
    <project name="project/test" path="test" />
    <project name="project/apps/hello" path="apps/hello"/> 
</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没有效果
3. 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的子项目
4. manifest-server
它的url属性用于指定manifest服务的URL,通常是一个XML RPC 服务
它要支持一下RPC方法:
GetApprovedManifest(branch, target) :返回一个manifest用于指示所有projects的分支和编译目标。
target参数来自环境变量TARGET_PRODUCT和TARGET_BUILD_VARIANT,组成T A R G E T P R O D U C T − TARGET_PRODUCT-TARGETpRODUCT−TARGET_BUILD_VARIANT
GetManifest(tag) :返回指定tag的manifest

5. project
需要clone的单独git

name :git 的名称,用于生成git url。URL格式是:remotefetch/{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命令是会用来定义环境变量
repo manifest的3个属性revision、upstream、dest-branch:

revision:是修订的版本,通常指向一个具体的commitid,repo sync之后会checkout到该commitid,也可以是一个分支名称,如果是分支名称,则repo sync之后,checkout到当前分支最新commitid;
upstream:是一个分支名称,和revision匹配,如果revision是分支名称,则upstream不起作用,如果revision是commitid,则upstream则是该commit对象所在的分支;
dest-branch:项目所属的目标分支,当使用repo upload(gerrit)命令的时候,代码会上传到该分支,如果不使用gerrit,可以不指定该值;
使用repo manifest -r查看当前的manifest信息;

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

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

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值