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
相关推荐
Kkooe3 小时前
GitLab|数据迁移
运维·服务器·git
Beekeeper&&P...4 小时前
git bash是什么,git是什么,git中的暂存区是什么,git中的本地仓库是什么,git中工作目录指的是什么
开发语言·git·bash
Stara05118 小时前
Git推送+拉去+uwsgi+Nginx服务器部署项目
git·python·mysql·nginx·gitee·github·uwsgi
lsswear9 小时前
GIT 操作
git
勋勋勋勋小勋勋9 小时前
git分支合并某一次提交
git
PandaCave10 小时前
git常用命令以及注意事项总结
git
算你狠 - ZGX14 小时前
Git使用
git
Lojarro20 小时前
【后端】版本控制
git·subversion
MengYiKeNan1 天前
Git配置与使用
git