我已经创建了一个脚本,可以自动备份硬盘上的GitHub存储库。
我使用我的Github用户名与一个个人访问令牌相结合,以获得对Github的授权。现在,我在他们的文档中读到了一些关于如何从API (公共和私有)中获取我的所有存储库的内容,但是我似乎只能获得公开的.
我的剧本:script.sh
根据我在第78行中所能理解的,url应该返回我所有的“拥有”存储库(其中应该包括我的私人存储库)。
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}")我已经启用了所有存储库范围,这应该使我“完全控制私有存储库(和公共存储库)”。

我现在没有主意了..。我做错什么了吗?
注意:我试图以用户身份获得私有存储库,而不是作为组织
注意:${GITHUB_USERNAME}和${GITHUB_TOKEN}是我在脚本中当然已填写的变量
发布于 2021-06-30 19:33:57
您正在调用/users端点,但是查看为经过身份验证的用户列出存储库,您应该调用/user/repos。
默认情况下,这将返回当前通过身份验证的用户的所有存储库,包括公共存储库和私有存储库。您还需要正确地处理分页(除非您确实知道不到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发布于 2022-09-07 07:25:57
visibility=all是这里的关键,伙计们。我花了几个小时,但最终没有得到我想要的。在文档中也提到了- https://docs.github.com/en/rest/repos/repos#list-repositories-for-the-authenticated-user
https://stackoverflow.com/questions/68200480
复制相似问题