git-repo系列教程(2) manifest 文件

manifest 文件

文章目录

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
相关推荐
shark4 小时前
无需放弃变更、关闭占用程序!用暂存区和 git底层命令实现 Git 变更备份
git·shell·自动化运维
_poplar_5 小时前
15 【C++11 新特性】统一的列表初始化和变量类型推导
开发语言·数据结构·c++·git·算法
北城笑笑5 小时前
Git 10 ,使用 SSH 提升 Git 操作速度实践指南( Git 拉取推送响应慢 )
前端·git·ssh
蓁蓁啊11 小时前
GIT使用SSH 多账户配置
运维·git·ssh
相与还16 小时前
IDEA和GIT实现cherry pick拣选部分变更到新分支
git·elasticsearch·intellij-idea
刘志辉1 天前
git指令
git
2501_916766541 天前
【Git学习】初识git:简单介绍及安装流程
git·学习
孤独的追光者1 天前
Git 完整流程:从暂存到推送
git
平平无奇。。。1 天前
版本控制器之Git理论与实战
linux·git·gitee·github
这周也會开心2 天前
Git介绍和使用
git