- 
                Notifications
    
You must be signed in to change notification settings  - Fork 105
 
Open
Description
[任务] 新增一个 CL(Change List)合并队列
[任务分值] 50 分
[背景描述]
当前 Mega 系统中,CL(Change List)在通过所有检查(如 Reviewer 审批、Commit 校验、冲突检测)后,用户即可点击「Merge」按钮执行合并操作。
然而,在多人并行开发场景下,多个 CL 同时尝试合并到主分支时,系统可能出现以下问题:
- 多个 CL 几乎同时执行合并,可能导致主分支冲突;
 - 无法保证合并顺序,存在回退或重复构建风险
 
[需求描述]
- 新增 CL 合并队列系统
 
- 所有通过审核的 CL 在合并前会进入一个队列中;
 - 系统自动按顺序逐个处理合并,避免并发冲突。
 
- 状态控制与可视化
 
- CL 的状态包含:Waiting(等待)、Testing(构建中)、Merging(合并中)、Merged(成功)、Failed(失败);
 - 前端可查看当前合并队列和每个 CL 的状态;
 - 支持查看失败原因(如冲突检测失败、测试不通过)。
 
- 合并流程自动化
 
- 检查与主分支的冲突;
 - 触发 Buck2 构建测试;
 - 测试通过后执行自动合并;
 - 更新 CL 状态并记录日志。
 
- 失败与重试机制
 
- 若 CL 合并或测试失败,状态标记为 Failed;
 - 用户可手动点击「重新入队(Retry)」重新触发;
 - 若在执行过程中上游分支发生变更,自动取消并重新排队。
 
- 前端可视化
 
- 合并队列列表视图(展示顺序、状态、进度);
 - 重试 或 取消 操作。
 
[代码标准]
- 所有 PR 提交必须签署 
Signed-off-by和 使用GPG签名,即提交代码时(使用git commit命令时)至少使用-s -S两个参数,参考 Contributing Guide; - 所有 PR 提交必须通过 
GitHub Actions自动化测试,提交 PR 后请关注GitHub Actions结果; - 代码注释均需要使用英文;
 
[PR 提交地址] 提交到 mega 仓库的 main 分支 `` 目录;
[开发指导]
- 认领任务参考 r2cn 开源实习计划 - 任务认领与确认;
 
[导师及邮箱] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在 #p-meta 频道和导师交流。
- Quanyi Ma [email protected]
 - Tianxing Ye [email protected]
 
[备注]
- 认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务 和 r2cn 开源实习计划 - 学生注册与审核