[任务] 匹配推送的Commit 到用户系统
[任务分值] 20 分
[背景描述]
在Mega系统中,Git Commit 记录是代码变更的唯一来源,但 Commit 的提交信息(如 author、committer 字段)通常只包含用户的邮箱和名称,这些信息:
- 与用户系统(内部的账号体系、SSO、GitHub/GitLab 用户系统等)并未完全对齐;
- 存在同一用户使用多个邮箱或不同名称提交的情况,导致无法准确追踪提交人身份;
- 缺少与权限、审计、代码评审体系的关联,难以满足企业级的代码合规和可追溯性需求。
因此,需要在推送时,结合服务端收到的 AccessToken 来识别推送者的真实身份,并与 commit 中的 email 进行比对,从而保证提交的身份可信。
同时,还要考虑到某些项目可能允许匿名提交(例如开源场景),此时系统需要具备灵活的策略:
- 在开启严格验证的项目中,强制要求 email 与推送用户匹配。
- 在允许匿名的项目中,允许 email 无法匹配真实用户,但需要打上“匿名提交”的标记,以便后续追踪和审计。
[需求描述]
- 用户身份获取
- 在 Git push 过程中,服务端通过 AccessToken 获取推送用户的身份信息(User ID、邮箱集合等)。
- Commit 与用户关联信息存储
- 对每个 Commit 的 author email 与推送用户绑定的邮箱集合进行匹配。
- 在保存 Commit 记录时,附加关联的用户 ID。
- 当无法匹配用户或者允许匿名提交时,标记为 “匿名提交” 并提供后续补充绑定能力。
- 接口与展示
- 在 MR、Commit 历史、代码文件责任人等界面,展示 Commit 与用户的关联结果(例如显示用户系统中的头像和昵称)。
- API 返回的 Commit 数据需包含用户 ID 或用户对象信息。
- 前端 UI 在展示时,应明确区分实名提交与匿名提交。
[代码标准]
- 所有 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 genedna@gmail.com
- Tianxing Ye yetianxing2014@gmail.com
[备注]
- 认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务 和 r2cn 开源实习计划 - 学生注册与审核
[任务] 匹配推送的Commit 到用户系统
[任务分值] 20 分
[背景描述]
在Mega系统中,Git Commit 记录是代码变更的唯一来源,但 Commit 的提交信息(如 author、committer 字段)通常只包含用户的邮箱和名称,这些信息:
因此,需要在推送时,结合服务端收到的 AccessToken 来识别推送者的真实身份,并与 commit 中的 email 进行比对,从而保证提交的身份可信。
同时,还要考虑到某些项目可能允许匿名提交(例如开源场景),此时系统需要具备灵活的策略:
[需求描述]
[代码标准]
Signed-off-by和 使用GPG签名,即提交代码时(使用git commit命令时)至少使用-s -S两个参数,参考 Contributing Guide;GitHub Actions自动化测试,提交 PR 后请关注GitHub Actions结果;[PR 提交地址] 提交到 mega 仓库的
main分支 `` 目录;[开发指导]
[导师及邮箱] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在
#p-meta频道和导师交流。[备注]