如何使用 GitHub API 在 GitHub 组织中检索 1000 多个存储库列表

时间:2021-01-21 19:33:18

标签: shell github github-api

我正在使用以下脚本在我的 GitHub Enterprise 组织之一中生成存储库列表,并且运行良好;但是,默认情况下,它一次只能获取 100 个存储库。

如何修改它以生成整个列表?我的 GitHub 组织中有大约 2000 个存储库。

curl --silent --user "myusername:mypassword" "https://github.***.com/api/v3/orgs/myorg/repos?page=1&per_page=2000" | npx jq '.[].clone_url' | while read repo
do
    repo="${repo%\"}"
    repo="${repo#\"}"
    echo "$repo"
done > repolist.txt

我无法在这里调整 page=*&per_page=* 并且无论我使用什么数字组合,当我执行上述 shell 脚本时,都会生成一个名为 repolist.txt 的文件,其中包含前 100 个存储库的列表GitHub 组织。

1 个答案:

答案 0 :(得分:1)

来自docs

<块引用>

您可以指定要接收的物品数量(最多 100 个);

You can go to /orgs/{org} and read public_repos

使用此值,您可以创建 total_pages=$(($public_repos / 100 + 1)) 并在 total_pages 中迭代递增您的 page 属性。

下面是一个小代码,只需添加您的凭据和组织名称:

#!/bin/bash

user=""
password=""
org=""
public_repos=$(curl -s -u "${user}:${password}" "https://api.github.com/orgs/${org}" | jq .public_repos)
per_page=100
total_pages=$(($public_repos / $per_page + 1))

for page in $(seq 1 $total_pages); do
  curl -s -u "${user}:${password}"\
    "https://api.github.com/orgs/${org}/repos?page=${page}&per_page=${per_page}" | \
    jq -r '.[].clone_url'
done
相关问题