- 
                Notifications
    
You must be signed in to change notification settings  - Fork 105
 
Open
Description
[任务] Buckal 工具上传Buck文件集成
[任务分值] 60 分
[背景描述]
目前 Mega 系统 已经支持通过 UI 或内部流程创建 CL(Change List)并进行代码文件变更与构建:
当前需要实现一组面向 Buckal CLI 工具 的 专用 API 接口,使其能够:
- 创建 CL
 - 上传关联文件(BUCK 文件及依赖)
 - 通知 Mega 上传完成
 - 自动将 CL 状态从 Draft 改为 Open,并触发构建流程
 
[需求描述]
- 
CLI 新建 CL
 - 
CLI 上传 BUCK 文件
 
- 支持单文件或目录上传。
 - 使用 multipart/form-data 格式上传。
 - 调用 Mega API:POST /api/cl/:id/files
 - 后端接收后保存文件快照(例如存入临时区)。
 
- 通知 Mega 文件上传完成
 
- CLI 上传完所有文件后调用:
 - POST /api/cl/:id/notify_upload_complete
 - Mega 根据上传的文件路径及修改内容:
 - 生成新的 tree 和 commit;
 - 将 CL 从 Draft 状态改为 Open;
 - 触发后续构建任务(通过构建队列)。
 
4.后端自动生成 Commit
- 后端根据 CL 的文件快照生成 Git tree;
 - 自动创建一个新 commit;
 - 写入 refs;
 - 关联到 CL。
 
- API 参考
 
| 步骤 | CLI 操作 | Mega 系统行为 | API 说明 | 
|---|---|---|---|
| CLI 创建 CL | 用户执行 buckal push | Mega 创建一个 Draft 状态的 CL | POST /api/cl/create | 
| 上传文件 | CLI 逐个上传 BUCK 文件与资源 | Mega 接收文件并写入临时存储或 blob 仓库,生成对应 commit | POST /api/cl/:id/upload | 
| 上传完成 | CLI 调用完成通知 API | Mega 将 CL 状态从 Draft → Open,触发构建 | POST /api/cl/:id/complete | 
[代码标准]
- 所有 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 开源实习计划 - 学生注册与审核