grimoirelab perceval gitee - X-lab2017/grimoirelab GitHub Wiki
1、概述
主要获取 issue/PR/repo 的数据。
- GiteeClient 通过Gitee提供的OpenAPI与 Gitee后台交互。
- GiteeBackend 提供与Perceval的集成工作
- GiteeBackendArchive提供本地缓存的功能
- GiteeCommand 提供命令行的封装
涉及组件:grimoirelab-perceval
代码地址:https://github.com/WillemJiang/grimoirelab-perceval-gitee
2、核心业务点
- 翻页功能支持:由于全量获取issue以及PR的数据量会比较大,需要GiteeClient支持翻页方式获取相关的数据, 翻页操作与Github有一点不同
- 限流功能应对: 目前Gitee API不支持限流,GiteeClient 没有删除有关限流处理的内容.
- Gitee issue与Github issue API 差别不大,除了不提供 comment reaction的功能,还有assignee字段,其他都差不多
- Gitee PR 的API 与Github PR API 差别很大, Merged_by 信息直接通过PR拿不到,需要结合action log进行分析才能获得, Github PR reviewers 信息对应与Gitee PR 中的 assignees, 同时Gitee PR还提供的 testers信息来指定测试人员。
- 使用API token有认证时间限制,如果出现超时需要做refresh操作https://gitee.com/api/v5/oauth_doc#/。
3、目前工作进展
- GiteeAPI服务模拟 (Issue,PR)。
- GiteeBackend获取数据
- GiteeCommand 测试
- 写Unit test来模拟 API token 认证问题
- 为PR填写merged by 信息
- 展示PR的testers 和 assignees信息
4、待解决问题
- Gitee提供的用户信息与github相比还很不完整, 需要通过Sorting Hat数据库进行补充。下表为目前发现的一些在 perceval github backend中有而 gitee backend 没有提供的字段:
字段 | scope | 说明 | 备注 | 解决方案 |
---|---|---|---|---|
issue/pr | 邮箱 | 用户个人信息里的邮箱 | 外部关联 | |
company | issue/pr | 公司 | 用户个人信息里的公司 | 外部关联 |
location | issue/pr | 所在地 | 用户个人信息里的所在地 | 这部分可以忽略 |
reaction | issue/pr | 表态(点赞、火箭等) | gitee api 没有提供 | 暂时不考虑 |
merged_by | pr | PR是被谁merge的 | gitee api 没有提供 | 通过gitee Action Log获取相关信息 |
forks_count | pr | 这个仓库的fork count | gitee api 获取的 pr 数据里没有 | 可以调用其他接口 |
review_comments | pr | review comment数目 | gitee api 获取的 pr 数据里没有 |
注:外部关联:这些信息是用来获取用户隶属关系的, 如果gitee不提供的情况下,我们可以考虑扩展sorting head的功能,通过导入外部数据的表的方式,建立与gitee账号之间的关系。这部分的内容可以做成一个维护个人开源信息的网站。