github - 计算创建、合并或拒绝的拉取请求数量

标签 github github-actions pull-request

希望你们一切都好。我只是想知道是否有办法找出用户创建了多少个拉取请求。还有同一用户的拉取请求有多少被批准或拒绝。只是想将此信息用于某些指标。

最佳答案

我做了一些研究并发现了这一点:

通过pip install requests首次安装请求。然后需要生成访问 token (设置 - 开发者设置 - 个人访问 token - 生成新 token ),并为 token 添加用户:读取用户权限。

然后,您需要将 token 导出为环境变量。有很多关于如何执行此操作的博客文章 - 为了使其与下面提供的脚本一起使用,您应该将其命名为 GITSTATS_TOKEN

要获取您已提交和审核的 PR 数量,您可以运行以下脚本(添加您自己的用户名和您感兴趣的存储库 - 在此示例中,查询显示我提交了多少 PR并在 pandas-dev/pandas 中进行了审查):

import requests
import os

data = requests.get('https://api.github.com/search/issues?q=is:pr+repo:pandas-dev/pandas+author:AUTHOR+is:merged').json()

print(f"Merged PRs: {data['total_count']}")

url = 'https://api.github.com/graphql'
query = (
"""
{
  user(login: "AUTHOR") {
    contributionsCollection {
      pullRequestReviewContributionsByRepository {
        contributions {
          totalCount
        }
        repository {
          name
        }
      }
    }
  }
}
"""
)
json = { 'query' : query}
api_token = os.environ['GITSTATS_TOKEN']
headers = {'Authorization': 'token %s' % api_token}

r = requests.post(url=url, json=json, headers=headers)

json_data = r.json()['data']['user']['contributionsCollection']['pullRequestReviewContributionsByRepository']

reviews = [i['contributions']['totalCount'] for i in json_data if i['repository']['name'] == 'pandas'][0]

print(f'Number of reviews: {reviews}')

Sourcedemo repo

关于github - 计算创建、合并或拒绝的拉取请求数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70951216/

相关文章:

ssh - 为什么我的 SSH 在连接到 github 时卡在那里?

github - Git 坏文件 fatal error

ssh - 在GitHub Actions上通过SSH自连接

github-actions - Windows 10 上的 GitHub Actions 使用的命令行界面是什么?

github - 合并 PR 时是否可以更改 github 拉取请求标题

Git SSH 问题 : Terminal works fine, 但所有 GUI 客户端都失败

php - 如何通过 Composer 安装 Abraham 开发的 Twitter OAuth 开发版本?

java - 如何在 build.gradle 文件中使用 GitHub secret 或 GitHub 环境变量

azure - 在 Azure DevOps 中通过拉取请求进行构建

git - 为什么我们需要在我们的 fork 存储库中创建一个分支来推送我们的更改,然后创建一个 pull 请求到上游存储库?