一、repo是什么?
是什么: Repo是基于git的仓库管理工具,是一个python脚本。
干什么: Repo用于同时管理多个git仓库,可以做统一的上传下载等操作。
二、repo使用相关语法介绍
2.1、要使用repo
首先需要有 manifest
仓库
manifest
仓库: 定义多仓库关联的清单文件(manifest 文件
)保存于一个git仓库中,这个git仓库称为 manifest 仓库
。仓库中默认的 manifest
清单文件名为 default.xml
,示例如下。(仓库中可以包含多个 XML 文件,但是除了默认的 default.xml 之外,其他 XML 文件需要通过命令行的相关参数显式的指定。)
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="origin"
fetch=".."
revision="master"
review="https://codeup.aliyun.com" />
<remote name="github"
fetch="https://github.com"
revision="master"
review="" />
<default remote="origin"
revision="master"
sync-j="4" />
<project name="alibaba/git-repo-go" path="git-repo" groups="app">
<linkfile src="README.md" dest="README.md"></linkfile>
</project>
<project name="alibaba/git-repo-go-doc" path="website" groups="app"/>
<project name="jiangxin/goconfig" path="lib/goconfig" groups="lib" remote="github" />
<project name="jiangxin/multi-log" path="lib/multi-log" groups="lib" remote="github" />
</manifest>
2.2、manifest
文件语法介绍
2.2.1、remote: 元素一个 Manifest 文件中可以包含多个 remote 元素
每一个 remote 元素定义了一个远程服务器。
每个 project 元素都关联唯一一个 remote 元素。
remote 元素包括的属性如下:
- name: 定义 remote 的名称。仓库克隆时将以该名称建立和远程仓库的关联。
- fetch: 定义服务器 URL 地址。当一个项目被克隆时,将通过
fetch
定义的服务器 URL 地址和项目 name
字段组合得到仓库的克隆地址。
- revision: 定义项目的默认分支。
- review: 参数设置 git-repo 发动集中式评审的服务器地址。
2.2.2、default 元素
当项目(project)元素没有设置 remote、revison 等属性,则直接使用 default 元素中相关设置。即 default 元素为 project 元素相关属性的缺省值。
2.2.3、project 元素:每一个 project 元素定义一个git仓库信息
其中关键属性如下:
- name: 既作为远端项目的名称,又和 remote 的 fetch 字段一起组合出仓库的 URL 地址。
- path: 是一个相对路径,是仓库在本地工作区的检出路径。
- remote: 设置项目对应的远程源仓库。
- revision: 定义该项目要使用的分支。
参考资料:更多语法规则见Manifest 格式。
三、repo安装使用教程
3.1 安装教程
安装 git-repo
3.2、使用教程
git repo init -u <manifest仓库的地址> -b <manifest仓库的分支> -m <manifest文件> # 初始化工程,指定要下载的代码仓信息
git repo sync:下载代码
git repo start dev --all:给所有下载的代码仓创建名为dev的本地分支
在本地修改验证后
git repo upload:上传Gerrit服务器,等待review
详细命令介绍见:
1、快速开始 git-repo
2、多仓库协同概览
3、repo使用教程