Skip to content

[r2cn] 新增一个 CL(Change List)合并队列 #1570

@benjamin-747

Description

@benjamin-747

[任务] 新增一个 CL(Change List)合并队列

[任务分值] 50 分

[背景描述]

当前 Mega 系统中,CL(Change List)在通过所有检查(如 Reviewer 审批、Commit 校验、冲突检测)后,用户即可点击「Merge」按钮执行合并操作。
然而,在多人并行开发场景下,多个 CL 同时尝试合并到主分支时,系统可能出现以下问题:

  • 多个 CL 几乎同时执行合并,可能导致主分支冲突;
  • 无法保证合并顺序,存在回退或重复构建风险

[需求描述]

  1. 新增 CL 合并队列系统
  • 所有通过审核的 CL 在合并前会进入一个队列中;
  • 系统自动按顺序逐个处理合并,避免并发冲突。
  1. 状态控制与可视化
  • CL 的状态包含:Waiting(等待)、Testing(构建中)、Merging(合并中)、Merged(成功)、Failed(失败);
  • 前端可查看当前合并队列和每个 CL 的状态;
  • 支持查看失败原因(如冲突检测失败、测试不通过)。
  1. 合并流程自动化
  • 检查与主分支的冲突;
  • 触发 Buck2 构建测试;
  • 测试通过后执行自动合并;
  • 更新 CL 状态并记录日志。
  1. 失败与重试机制
  • 若 CL 合并或测试失败,状态标记为 Failed;
  • 用户可手动点击「重新入队(Retry)」重新触发;
  • 若在执行过程中上游分支发生变更,自动取消并重新排队。
  1. 前端可视化
  • 合并队列列表视图(展示顺序、状态、进度);
  • 重试 或 取消 操作。

[代码标准]

  1. 所有 PR 提交必须签署 Signed-off-by 和 使用 GPG 签名,即提交代码时(使用 git commit 命令时)至少使用 -s -S 两个参数,参考 Contributing Guide
  2. 所有 PR 提交必须通过 GitHub Actions 自动化测试,提交 PR 后请关注 GitHub Actions 结果;
  3. 代码注释均需要使用英文;

[PR 提交地址] 提交到 mega 仓库的 main 分支 `` 目录;

[开发指导]

  1. 认领任务参考 r2cn 开源实习计划 - 任务认领与确认;

[导师及邮箱] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在 #p-meta 频道和导师交流。

  1. Quanyi Ma [email protected]
  2. Tianxing Ye [email protected]

[备注]

  1. 认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务r2cn 开源实习计划 - 学生注册与审核

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions