如何使用 GitHub API 在 GitHub 组织中检索包含 1000 多个存储库的列表
How to retrieve list of 1000 plus repoistories in a GitHub org using GitHub API
我正在使用下面的脚本在我的 GitHub 企业组织中生成一个存储库列表,它工作正常;但是,默认情况下它一次只能获取 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
的文件GitHub 组织中的前 100 个回购列表。
来自docs
You can specify how many items to receive (up to a maximum of 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
我正在使用下面的脚本在我的 GitHub 企业组织中生成一个存储库列表,它工作正常;但是,默认情况下它一次只能获取 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
的文件GitHub 组织中的前 100 个回购列表。
来自docs
You can specify how many items to receive (up to a maximum of 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