manifest 文件
文章目录
- [manifest 文件](#manifest 文件)
- manifest文件介绍
- 清单库manifest.git例子
manifest文件介绍
xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote fetch="ssh://git@git.software.team/learn-repo" name="origin" review="http://xxx.xxx.xxx:8080"/>
<remote fetch="https://github.com" name="github" alias="origin"/>
<default remote="origin" revision="master" sync-j="4" />
<project name="build" path="build">
<linkfile dest="build.sh" src="build.sh"/>
</project>
<project name="docs" path="docs">
<copyfile dest="README.md" src="README.md"/>
</project>
<project name="third_party/openssl" path="third_party/openssl" revision="OpenSSL_1_1_1l" />
<project name="curl/curl" path="third_party/curl" remote="github" />
<project name="src" path="src" revision="release" />
</manifest>
- remote元素: remote元素可以有多个,用于存在多个git远程服务器的情况。
- fetch:使用此remote的所有项目的Git URL前缀。 **每个项目的名称都附加到此前缀以形成用于克隆项目的实际 URL。**如果使用此remote的所有项目的前缀和manifest仓库前置一致的话,可以使用...代替。
- name:此清单文件唯一的短名称。此处指定的名称用作每个项目的 .git/config 中的远程名称,因此可自动用于 git fetch、git remote、git pull 和 git push 等命令。
- review:通过repo upload将评论上传到的 Gerrit 服务器的主机名。 该属性是可选的; 如果未指定,则repo upload将不起作用。
- alias:该属性可以省略,当指定了该属性时,可以覆盖name属性设置每个项目的.git/config中的远程名称。不同remote元素的alias属性可以相同,比如不同remote元素的alias属性可以都是origin。
- groups属性:所有的projects都属于group "all",如果你只想下载部分project,你可以在初始化的时候加入-g选型。
bash
repo init -u https://android.googlesource.com/platform/manifest -g all,-notdefault,tools
#示例中的-g all,-notdefault,tools表示下载所有default的project和tools project。
- default元素 default元素只能有一个。
- remote:project部分不单独指定remote的话就使用default部分的。
- revision:project部分不单独指定revision的话就使用default部分的。
- sync-j:同步时(执行repo sync命令时)使用的并行作业数
- sync_c:如果设置为true,则只同步指定的分支(revision 属性指定),而不是所有的ref内容
- sync_s:如果设置为true,则会同步git的子项目
- project元素 该部分定义了项目代码由哪些子仓库组成
- name:相对于remote部分fetch指定的前缀的相对路径
- path:把代码下载下来后在本地的相对于当前路径的相对路径
- revision:是指下载下来的代码要checkout到哪个revision上,这里的revision可以是commit id、branch name、tag name,本质上都是commit id。default.xml中通常用branch name做revision,可以下载到并且checkout出该branch上最新的代码,标签和/或commit id在理论上应该有效,但尚未经过广泛测试。如果revision用commit id的话,那后面必须跟上upstream,upstream的值是个branch name。revision部分如果省略的话,就等于使用default部分定义的revision。
- remote:前面定义的远程元素的名称。如果未提供,则使用默认元素提供的值。
- copyfile元素 project元素的子元素 ,每个元素描述了一对 src-dest 文件对。同步时(即执行repo sync命令时)src文件会被拷贝到dest。通常会被用于 README 或 Makefile 或其他构建脚本。
- dest:是相对于当前目录(执行repo init和repo sync命令的目录)的路径
- src:是相对于project path的相对路径
- linkfile元素 与copyfile类似,只不过不是拷贝,而是建立软连接。
清单库manifest.git例子
xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="server" alias="origin" fetch="https://www.sample.com/git/xxx" />
<remote name="home" alias="origin" fetch="http://server:3000/xxx" />
<default remote="home" revision="master" sync-j="4" sync_s="ture" sync_c="false" />
<project name="build_docs" path="build_docs"></project>
<project name="pc_sdk" path="pc_sdk"></project>
</manifest>
bash
touch default.xml
git init
git add default.xml
git commit -m "first commit"
git remote add origin http://server:3000/xxx.git
git push -u origin master