开发工具介绍(一):多仓库管理工具 Repo 的安装及基本使用
修改 .repo/manifest.xml 或使用本地清单:<manifest>命令作用初始化仓库repo sync同步所有子仓库查看所有仓库状态创建新分支在所有仓库中执行命令提交代码审核。
·
1.简介
Repo 是一个用于管理多个 Git 仓库的命令行工具,由 Google 开发,且广泛应用于多个大型开源项目。由于使用 Git 管理大型的开源项目比较困难,repo 通过清单文件(manifest)定义所有子仓库的依赖关系整合起多个 git 仓库,使得开发者可以更有效地管理和同步多项目代码库。
2.Linux 安装 repo 工具
# 下载 repo 工具到 ~/bin 目录
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
# 添加到 PATH(临时生效)
export PATH="$HOME/bin:$PATH"
# 添加到 ~/.bashrc 或 ~/.zshrc(永久生效)
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
2.初始化仓库
2.1创建源码目录
mkdir my-project && cd my-project
2.2初始化 repo
repo init -u <MANIFEST_REPO_URL> -b <BRANCH>
其中,-u 指定了清单仓库的 URL,-b 选择分支。
2.3同步源码
repo sync
此处可以通过 -j4 进行并行下载的配置;-c 表示只同步当前分支,可节省时间;–forces-ync 表示强制覆盖本地修改。
3.日常开发操作
3.1 查看仓库状态
repo status
3.2切换分支
repo start <BRANCH_NAME> --all # 为所有仓库创建新分支
repo checkout <BRANCH_NAME> # 切换到已有分支
3.3同步最新代码
repo sync
3.4提交修改
cd meat-agl #meta-agl
git add git add scripts/build-raspberrypi5
git commit -m “Add implement for raspberrypi5”
git review #推送至远程审核,依赖 git-review 工具
3.5回退修改
repo forall -c 'git reset --hard' # 丢弃所有子仓库的修改
4.高级功能
4.1选择性同步
repo sync <PROJECT1> <PROJECT2> # 仅同步指定子仓库
4.2查看差异
repo diff
4.3运行命令到所有仓库
repo forceall -c “git status” # 在所有仓库中运行“git status”
4.4自定义清单文件(manifest.xml
)
- 修改 .repo/manifest.xml 或使用本地清单:
cat local-manifest.xml
<manifest>
<remote name="custom" fetch="git://your-repo-url" />
<project path="path/to/subrepo" name="subrepo" remote="custom" revision="main" />
</manifest>
repo init -m local-manifest.xml
5. AGL 示例
# 1.初始化并同步源代码
repo init -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo -b halibut
repo sync -j4
# 2.创建开发分支
repo start fix-bug-5399 --all
# 3.修改代码并提交
cd meta-agl
vim docs/devguides-book.yml # 编辑文件
git add .
git commit -m "Update guide doc for bug5399"
git review # 推送到 Gerrit
# 4.更新代码
repo sync
repo rebase # 将本地修改变基到最新代码
6.常用命令总结
命令 | 作用 |
---|---|
repo init -u URL -b BRANCH | 初始化仓库 |
repo sync | 同步所有子仓库 |
repo status | 查看所有仓库状态 |
repo start BRANCH -all | 创建新分支 |
repo farall -c CMD | 在所有仓库中执行命令 |
repo upload | 提交代码审核 |
7.与 git 的比较
功能 | repo | git |
---|---|---|
多仓库管理 | 支持 | 不支持 |
分支操作 | 批量创建/切换分支 | 各分支独立操作 |
同步代码 | 一键同步所有仓库 | 需手动进入每个仓库 |
提交审核 | 集成 Gerrit(git review) | 需配置远程仓库和 PR |
总而言之,通过 repo 工具,开发者可以更高效地管理包含数个子仓库的大型项目。开源的性质使得开发者不仅可以自由地使用 Repo 工具,还能够根据自己的需求进行定制和优化
Reference
更多推荐
所有评论(0)