P粉1079910302023-09-02 16:21:43
它确实支持按组织过滤。使用:
await octokit.request("GET /search/issues", { q: `is:pr is:open org:ORGANIZATION`, });
P粉7138664252023-09-02 13:30:20
没有直接的方法可以使用 GitHub 的 API 或 Octokit 在单个请求中获取组织内所有存储库中的所有开放 PR。 Search API 可以搜索 PR,但不支持按组织过滤。
您可以获取组织中所有存储库的列表,并使用存储库列表获取每个存储库的所有拉取请求。
示例:
const { Octokit } = require("@octokit/core"); const octokit = new Octokit({ auth: `your_auth_token` }); async function fetchAllRepos(org) { const repos = []; let page = 1; while (true) { const result = await octokit.request('GET /orgs/{org}/repos', { org: org, type: 'public', per_page: 100, page: page }); if (result.data.length === 0) break; repos.push(...result.data); page++; } return repos; } async function fetchAllPRs(org) { const repos = await fetchAllRepos(org); const prPromises = repos.map(repo => octokit.request('GET /repos/{owner}/{repo}/pulls', { owner: org, repo: repo.name, state: 'open' }) ); const prResults = await Promise.all(prPromises); const prs = prResults.flatMap(result => result.data); return prs; } fetchAllPRs('my-org-name') .then(prs => console.log(prs)) .catch(err => console.error(err));
不确定在你的情况下这会有多慢。无论如何,我希望这会有所帮助。