概述
Repo只是一个工具,可以管理多个Git仓库。它是谷歌为管理庞大的安卓源码而封装的一套脚本,Git才是实际的版本管理工具。文章只是描述了大概步骤,部分细节不做讲解。
Repo 下载
- Repo项目主页
- 克隆下的仓库删除与远程的连接,
git remote remove origin
- 服务器上新建仓库 repo
- 上传刚刚下载 repo
Repo配置文件
Repo管理多个Git仓库,通过配置文件default.xml指定
- 某平台配置文件示例
- 注意顶层目录的Makefile语法,其实是从buildroot中build复制过来的
- path = ‘uboot-xxx’ 代表克隆下本地的目录名
- name = ‘uboot’ 代表远程服务器目录名
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="origin" fetch="ssh://git@gitlab.com:/"/>
<default revision="master" remote="origin"/>
<project path="buildroot" name="buildroot">
<copyfile dest="Makefile" src="build/Makefile"/>
</project>
<project path="doc" name="doc"> </project>
<project path="kernel-xxx" name="kernel"> </project>
<project path="uboot-xxx" name="uboot"> </project>
</manifest>
- 远程服务器新建 manifests仓库,上传本地仓库
- 然后服务器新建buildroot, doc, kernel, uboot,本地文件上传至远程仓库
克隆至本地
- 下载仓库中的repo文件, 添加可执行权限 chmod +x
- 修改部分代码
if not REPO_URL:
REPO_URL = 'xxxxx/repo.git'
REPO_REV = 'stable'
//改为
REPO_URL = '自己仓库地址/repo.git'
REPO_REV = 'master'
- 初始化版本repo仓库
./repo init -u 自己仓库地址/manifests.git -b master
// 提示
* [new branch] master -> origin/master
fatal: branch 'master' has not been signed
//修改为
./repo init -u 自己仓库地址/manifests.git -b master --no-repo-verify
问题解决
- 同步仓库代码
repo sync
- 新建本地mater分支(必须)
repo start mater --all