如何获取用户在属于组织的任何存储库上发出的拉取请求的计数?

noo*_*bie 13 github github-api

我正在尝试开发一个评级系统,可以列出在 GitHub 上对我的组织做出最大贡献的个人。我试图通过计算用户在任何组织的存储库中创建的“合并”拉取请求的数量来做到这一点。

我对 GitHub API 有点熟悉,但我在找出正确的请求时遇到困难。任何帮助将不胜感激。谢谢你们。另外,如果以这种方式计算的贡献也包括私人回购中的贡献,那就更好了。

PS:我不想使用提交次数作为计数,因为这不是一个精确的衡量标准,因为在开发一项功能时,一些用户不断提交一个文件,而其他用户则在创建一堆文件后提交。所以,请不要建议这样做。

另外,还有无效的拉取请求,或者一些已经过时的请求,我不想将它们计入贡献数量。

Ber*_*tel 21

您可以使用搜索查询来查找问题:

  • 类型prtype:pr
  • 作者:author:{some user}
  • 合并:is:merged
  • 在特定组织中:org:{some org}

搜索查询

org:mui-org author:eps1lon type:pr is:merged
Run Code Online (Sandbox Code Playgroud)

调用将是:

https://api.github.com/search/issues?q=org:mui-org%20author:eps1lon%20type:pr%20is:merged

然后过滤总计数,使用的示例:

org:mui-org author:eps1lon type:pr is:merged
Run Code Online (Sandbox Code Playgroud)

输出:

715
Run Code Online (Sandbox Code Playgroud)

您可以使用GraphQL API来:

  • 获取您组织中的用户列表
  • 使用别名为每个用户动态构建请求以执行搜索查询

所以你最终只有 2 个请求

中的一个例子:

curl -s "https://api.github.com/search/issues?q=org:mui-org%20author:eps1lon%20type:pr%20is:merged" | \
     jq '.total_count'
Run Code Online (Sandbox Code Playgroud)

输出 :

715
Run Code Online (Sandbox Code Playgroud)