Github API - 获取用户的私有仓库
Github API - Get private repositories of user
我创建了一个脚本,可以自动在硬盘驱动器上备份我的 GitHub 存储库。
我使用我的 Github 用户名和个人访问令牌来获得 Github 的授权。现在我在他们的文档中阅读了一些关于如何从 API (public & private) 获取我的所有存储库的信息,但我似乎只能获取 public.. .
我的脚本:https://github.com/TomTruyen/GitHub-Backup-Script/blob/main/github_backup_script.sh
根据我在第 78 行的理解,url 应该 return 我所有的 'owned' 存储库(应该包括我的私有存储库)
repositories=$(curl -XGET -s https://"${GITHUB_USERNAME}":"${GITHUB_TOKEN}"@api.github.com/users/"${GITHUB_USERNAME}"/repos?per_page="${repository_count}" | jq -c --raw-output ".[] | {name, ssh_url}")
我已经启用了所有应该给我 'Full control of private repositories (and public)'
的存储库范围
我现在没主意了...我做错了什么吗?
注意:我正在尝试以用户而非组织的身份获取我的私有存储库
注意:${GITHUB_USERNAME} 和 ${GITHUB_TOKEN} 是我在脚本中当然填写的变量
您正在调用 /users
端点,但查看 List repositories for the authenticated user 看起来您应该调用 /user/repos
.
默认情况下,这将为当前经过身份验证的用户 return 所有存储库,包括 public 和私有存储库。您还需要正确处理分页(除非您确定您的存储库少于 100 个)。
我能够使用以下脚本获取我所有存储库的列表:
#!/bin/sh
#
# you must set GH_API_USER and GH_API_TOKEN in your environment
tmpfile=$(mktemp curlXXXXXX)
trap "rm -f $tmpfile" EXIT
page=0
while :; do
let page++
curl -sf -o $tmpfile \
-u "$GH_API_USER:$GH_API_TOKEN" \
"https://api.github.com/user/repos?per_page=100&page=$page&visibility=all"
count=$(jq length $tmpfile)
if [[ $count = 0 ]]; then
break
fi
jq '.[]|.full_name' $tmpfile
done
我创建了一个脚本,可以自动在硬盘驱动器上备份我的 GitHub 存储库。
我使用我的 Github 用户名和个人访问令牌来获得 Github 的授权。现在我在他们的文档中阅读了一些关于如何从 API (public & private) 获取我的所有存储库的信息,但我似乎只能获取 public.. .
我的脚本:https://github.com/TomTruyen/GitHub-Backup-Script/blob/main/github_backup_script.sh
根据我在第 78 行的理解,url 应该 return 我所有的 'owned' 存储库(应该包括我的私有存储库)
repositories=$(curl -XGET -s https://"${GITHUB_USERNAME}":"${GITHUB_TOKEN}"@api.github.com/users/"${GITHUB_USERNAME}"/repos?per_page="${repository_count}" | jq -c --raw-output ".[] | {name, ssh_url}")
我已经启用了所有应该给我 'Full control of private repositories (and public)'
我现在没主意了...我做错了什么吗?
注意:我正在尝试以用户而非组织的身份获取我的私有存储库
注意:${GITHUB_USERNAME} 和 ${GITHUB_TOKEN} 是我在脚本中当然填写的变量
您正在调用 /users
端点,但查看 List repositories for the authenticated user 看起来您应该调用 /user/repos
.
默认情况下,这将为当前经过身份验证的用户 return 所有存储库,包括 public 和私有存储库。您还需要正确处理分页(除非您确定您的存储库少于 100 个)。
我能够使用以下脚本获取我所有存储库的列表:
#!/bin/sh
#
# you must set GH_API_USER and GH_API_TOKEN in your environment
tmpfile=$(mktemp curlXXXXXX)
trap "rm -f $tmpfile" EXIT
page=0
while :; do
let page++
curl -sf -o $tmpfile \
-u "$GH_API_USER:$GH_API_TOKEN" \
"https://api.github.com/user/repos?per_page=100&page=$page&visibility=all"
count=$(jq length $tmpfile)
if [[ $count = 0 ]]; then
break
fi
jq '.[]|.full_name' $tmpfile
done