Skip to content

[r2cn] 放开 CL 只能有一个 commit 的限制,添加 CL 与 commit 的关联表 #1604

@benjamin-747

Description

@benjamin-747

[任务] 放开 CL 只能有一个 commit 的限制,添加 CL 与 commit 的关联表

[任务分值] 30 分

[背景描述]

在当前 Mega 系统中,一个 CL(Change List) 对应一个唯一的 commit。
这种设计在早期阶段足够简单,方便对单一变更进行审查、合并和回滚,但随着项目需求变动,目前需要对接Buckal 在一个CL 中多次commit

因此,需要解除 CL 与 commit 的一对一绑定,改为一对多关系,并修改相关模块的逻辑以适配。

[需求描述]

  1. 新增 CL 与 Commit 的关联表

  2. 修改 CL 创建/更新逻辑
    • 允许通过 API 或 Git push 上传多个 commit。
    • 当检测到多个 commit 时,自动插入多条 cl_commits 关联记录。

  3. 修改 Diff / Compare 逻辑
    • Diff 比较应能处理多个 commit 的合并结果。
    • “CL Diff” 页面展示时应显示所有 commit 的变更(可以按 commit 分组)。

  4. 修改状态与合并逻辑
    • 合并时需合并所有关联的 commit。
    • 状态(如“已提交”、“已关闭”)在所有 commit 均成功合并后更新。
    • 支持撤销或 cherry-pick 多个 commit。

  5. 修改前端展示
    • CL 页面需支持显示多个 commit 列表。
    • 可在 UI 中查看每个 commit 的 hash、author、message。

[代码标准]

  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

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions