Skip to content

[r2cn] Open CL Update 机制与 Update Branch API 支持 #1786

@benjamin-747

Description

@benjamin-747

[任务] Open CL Update 机制与 Update Branch API 支持

[任务分值] 25 分

[背景描述]

当前 Mono 的 CL(Change List)在 Open 状态 下存在以下问题:

  1. Files Changed 显示异常
  • 当某个 CL 仍处于 Open 状态时,如果 其他人的 CL 被合并到目标分支(如 main / trunk):
  • 当前 Open CL 的 files changed 会显示 不属于该 CL 的提交内容
  1. 缺少 Update Branch 的标准能力
  • Open CL 无法主动“追上”目标分支的最新状态
  • UI 侧也缺乏一个明确的 Update Branch / Rebase / Sync 操作入口
  • 针对 Open CL 的 branch update / rebase 能力
  • 与 UI 行为一一对应的接口设计
  1. 核心原因
  • Open CL 的 diff 计算逻辑依赖的是“当前分支 HEAD 对比目标分支 HEAD”
  • 当目标分支前进时,没有对 CL 的 base commit 做冻结或显式更新
  • 导致 diff 被“动基线”污染

[需求描述]

  1. Open 状态 CL 的正确 Diff 语义

目标:

Open CL 的 Files Changed 只应反映「该 CL 自身引入的变更」

当其他 CL 合并到目标分支时:

  • 不应自动影响当前 Open CL 的 diff 展示
  • UI 上不出现“他人提交混入”的情况
  1. 支持 Update Branch(同步目标分支)

行为定义:
Update Branch 本质上是:

  • rebase(推荐)或
  • merge target branch into CL branch(可选)

Update 后:

  • CL_BASE 更新为新的目标分支 HEAD
  • CL_HEAD 相应变化
  • Files Changed 仍只包含该 CL 的变更

仅允许对 Open 状态 的 CL 执行
Update 失败(冲突)时:

  • 给出明确错误信息
  • CL 状态不应被破坏

[代码标准]

  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 genedna@gmail.com
  2. Tianxing Ye yetianxing2014@gmail.com

[备注]

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

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions