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、核心业务点

  1. 翻页功能支持:由于全量获取issue以及PR的数据量会比较大,需要GiteeClient支持翻页方式获取相关的数据, 翻页操作与Github有一点不同
  2. 限流功能应对: 目前Gitee API不支持限流,GiteeClient 没有删除有关限流处理的内容.
  3. Gitee issue与Github issue API 差别不大,除了不提供 comment reaction的功能,还有assignee字段,其他都差不多
  4. Gitee PR 的API 与Github PR API 差别很大, Merged_by 信息直接通过PR拿不到,需要结合action log进行分析才能获得, Github PR reviewers 信息对应与Gitee PR 中的 assignees, 同时Gitee PR还提供的 testers信息来指定测试人员。
  5. 使用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 说明 备注 解决方案
email 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账号之间的关系。这部分的内容可以做成一个维护个人开源信息的网站。