**已关闭。**此问题需要debugging details。它目前不接受回答。
编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
2个月前关闭。
Improve this question
为了从私有GitHub存储库的GitHub版本下载二进制tarball或zipball,必须使用什么特定的语法?
以下是我们所尝试的:
从这个链接上的文档开始,我一直在追求以下不希望的失败结果,如下所述:
以下来自docs的命令给出了JSON响应,但没有工件:
curl -L -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ghp_long8alpha8numeric8token" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/AccountName/RepoName/releases/tags/vers.a.b.c --ssl-no-revoke
前面的命令返回的zipball和tarball地址如下:
"tarball_url": "https://api.github.com/repos/AccountName/RepoName/tarball/vers.a.b.c",
"zipball_url": "https://api.github.com/repos/AccountName/RepoName/zipball/vers.a.b.c",
** curl 前面命令给出的URL**
接下来,我尝试了下面这行代码,它将前面命令输出的tarball_url
放入curl命令中。但下面的行返回一个名为vers.a.b.c
的0KB空文件
curl -O -H "Authorization: Bearer ghp_long8alpha8numeric8token" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/AccountName/RepoName/tarball/vers.a.b.c --ssl-no-revoke
** curl GitHub网站GUI中给出的URL**
最后,我在www.example.com GUI中的Web浏览器中导航GitHub.com到私有存储库的发布页面,右键单击Source code (zip)
链接并选择“复制链接地址”以获取为GitHub UI网站用户提供zipball的URL。我使用适用于GUI的点击式人类用户的URL组装了以下命令。但是下面的命令返回一个空的zipball。
curl -O -H "Authorization: Bearer ghp_long8alpha8numeric8token" -H "X-GitHub-Api-Version: 2022-11-28" https://github.com/AccountName/RepoName/archive/refs/tags/vers.a.b.c.zip --ssl-no-revoke
要求是跨平台并使用cURL。我们测试的初始环境必须是windows cmd。
BK2204的建议
根据bk2204的建议,我尝试了以下命令:
curl -L -O -H "Authorization: Bearer ghp_long8alpha8numeric8token" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/AccountName/RepoName/tarball/vers.a.b.c --ssl-no-revoke
结果是一个20 KB的文本文件,其中包含311个不可读的行。不确定不可读的行是否表示压缩数据。但无论如何,该文件都无法以其当前形式使用。
必须使用什么精确的语法才能成功下载tarball或zipball?
1条答案
按热度按时间oalqel3c1#
您使用的第二组curl命令(获取
tarball_url
和zipball_url
值的命令)需要使用-L
选项来curl,因为它们将始终重定向到另一个位置,而-L
选项指示应遵循重定向。在本例中,您可以通过使用
-v
选项curl看到您正在接收一个3xx请求,curl将打印发送和接收的标头。在GitHub上提供存档和原始文件的服务位于一个单独的域上,重定向将指向该域上的URL
codeload.github.com
。但是,您使用API是正确的,因为codeload.github.com不使用相同类型的令牌,因此通过使用您的请求访问API,您收到的重定向将包含一个临时令牌,codeload.github.com将验证该令牌以给予您所需的tarball或zipball。您不应该将域
github.com
用于自动请求(包括归档),因为该域不是为处理自动请求而设计的,并且具有比API更严格的速率限制。向主域(HTTPS Git请求之外)发出大量自动请求可能会导致您在一段时间内收到429。要使用的具体语法如下:
您需要替换
$TOKEN
、$OWNER
、$NAME
和$REV
。相反,您可以根据需要将URL替换为从tarball_url
或zipball_url
接收的URL。请注意,如果您没有收到预期的结果,您可能没有正确进行身份验证,您应该使用
-v
选项来查看您收到的状态代码。我已经验证了这个语法可以从我的私有存储库下载。