尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

【repo】使用repo进行多仓开发的基本流程

【repo】使用repo进行多仓开发的基本流程 在日常开发中使用Repo管理多仓库项目时整体流程可以总结为6 个标准步骤[1. 初始化环境] ➔ [2. 创建开发分支] ➔ [3. 编写代码/提交] ➔ [4. 同步最新变更] ➔ [5. 冲突处理/审查] ➔ [6. 清理分支]下面是完整的标准开发流程及命令第一步初始化与拉取项目代码在开始开发前需要先下载 Manifest 清单文件并全量拉取所有子仓库。# 1. 创建项目工作目录mkdirmy-projectcdmy-project# 2. 初始化 Repo 工作区关联清单仓及指定分支repo init-umanifest_repo_url-bbranch_name# 3. 多线程并行同步所有子仓库代码reposync-j8第二步创建本地开发分支核心步骤刚拉取下来的代码各个子仓库处于“游离头指针Detached HEAD”状态。在进行任何代码修改前必须先创建本地分支# 语法repo start 本地分支名 [--all | 指定仓库相对路径]# 方式 A为所有子仓库统一切出一个名为 feature/login 的分支repo start feature/login--all# 方式 B仅给与本次需求相关的子仓库切出分支推荐避免无关仓库产生冗余分支repo start feature/login services/auth apps/web第三步在子仓库中编写代码与提交Repo 只负责多仓的调度单个仓库内部的代码提交依然使用原生 Git 命令。进入对应的子仓库目录编写代码。运行repo status或repo diff确认全局改动情况。# 进入特定的子仓库cdservices/auth# 标准 Git 提交流程gitadd.gitcommit-mfeat(auth): add OAuth2 login support第四步同步上游主干最新代码开发过程中或提交前需要拉取团队上游如main分支的最新代码避免代码落后过多。# 返回项目根目录cd/path/to/my-project# 同步上游最新代码Repo 会自动在各个子仓库执行 rebase 或 mergereposync-j8第五步推送到远程与代码评审Code Review完成本地开发与测试后将代码推送至远程进行 Code Review 或合并。情况 A使用 Gerrit 评审系统Repo 原生支持如果团队使用 Gerrit 做代码审查可以直接通过 Repo 批量上传# 批量将改动上传至 Gerrit 评审平台repo upload情况 B使用 GitHub / GitLab / Gitee 等平台如果使用 Merge Request (MR) / Pull Request (PR) 模式进入改动过的子仓库手动推送到个人 Fork 仓或远程分支然后在 Web 端提交 MR/PRcdservices/authgitpush origin feature/login第六步清理与收尾工作当你的 MR/PR 被审核通过并合并入主干后清理本地已经完成使命的分支保持工作区整洁。# 1. 再次同步最新的主干代码reposync-j8# 2. 安全删除已合并的本地分支repo prune 极简开发流程速记repo startfeature_namepath# 1. 领任务切分支cdpathgitcommit-am...# 2. 干活标准 Git 提交reposync# 3. 对齐拉取最新代码repo upload(或gitpush)# 4. 交付提交评审repo prune# 5. 打扫清理旧分支特殊命令# 格式repo forall -c shell命令# 示例 1查看所有子仓库当前的 git 状态repo forall-cgit status -s# 示例 2清空所有子仓库中的未跟踪文件慎用repo forall-cgit clean -fd# 示例 3只在改动过的仓库中切回 main 分支repo forall-cgit checkout mainmanifest示例?xmlversion1.0encodingUTF-8?manifest!--1. 定义远程 Git 服务器基地址 --remotenameoriginfetchhttps://github.com/my-company/reviewhttps://gerrit.my-company.com/!-- Gerrit 代码评审地址(可选)--!--2. 设置默认参数默认使用 origin 远程仓默认跟踪 main 分支 --defaultrevisionmainremoteoriginsync-j4/!--3. 定义各个子仓库的映射关系 --!-- path: 本地存放目录|name: 远程仓库名|revision: 可单独指定此仓分支/Tag/Commit --projectpathapps/webnamefrontend-web/projectpathservices/authnameservice-authrevisionv1.2.0/projectpathlibs/commonnamecore-common-lib//manifest
返回列表