GitHub Api 下载 zip 或 tarball 链接

这里有一个很好的关于如何创建 zip/tarball 字符串的链接

当我从 github 下载一个 zip 文件时,文件名末尾的十六进制字符串代表什么?

但是我正在看 GitHub APIv3,我很好奇我是否遗漏了什么。

  1. 有没有通过 API 调用获得 zip/tarball 链接的方法?

  2. 如果没有,有没有一种方法可以不使用 git 二进制文件或库来构建这个字符串?也就是说,我可以使用各种 API 调用来提取需要的数据并组装成我需要的 URL 吗?

我知道第二个问题对堆栈溢出来说有点不合理,对我来说这是一个有趣的项目,所以我更喜欢第二个问题,如果你只是把我推向正确的方向,而不是扔下一个代码片段。或者只是告诉我有没有可能。

90823 次浏览

你可以通过 wget离开 GitHub 回购来获得 tar 文件(存档) :

wget --no-check-certificate https://github.com/User/repo/archive/master.tar.gz


# better, if the certificate authorities are present:
wget https://github.com/User/repo/archive/master.tar.gz

将从用户‘ User’的 repo‘ repo’中获得一个名为‘ master’的文件。

更新的 V3 API 网址是:

https://api.github.com/repos/User/repo/:archive_format/:ref
#
# two possibilities for fomat:
https://api.github.com/repos/User/repo/tarball/master
https://api.github.com/repos/User/repo/zipball/master


# from github example:
$curl -L https://api.github.com/repos/octokit/octokit.rb/tarball > octokit.tar.gz

然后可以使用 tar xpvf master获得完整的存档。它将按照 ABc1中描述的变数命名原则创建一个目录。

从 GitHub 获取归档文件不需要 Git 二进制文件,这要感谢它们的 下载服务“ Nodelload”


ligemer 建议的 编辑如下:

编辑2016-08-25-Shell 示例使用 Wget、变量和 Untar:

#!/bin/bash -ex


# arguments:
# token = $1
# organization = $2
# repo name = $3
# branch = $4


wget --header="Authorization: token ${1}" --header="Accept:application/vnd.github.v3.raw" -O - https://api.github.com/repos/${2}/${3}/tarball/${4} | tar xz

电话:

$ scriptName.sh token my-organization site.example master

上面的命令将下载 GitHub 文件夹并将其解压缩到与脚本相同的目录中。


Diogo Quintela 建议 在评论中:

下面的示例允许下载、解压缩和剪切顶层目录

curl -L https://api.github.com/repos/octokit/octokit.rb/tarball | tar xz --strip=1

语法描述为 在文件里:

GET /repos/:owner/:repo/:archive_format/:ref

下面的示例 URL 将(通过 302重定向)指向 Hadley/Devtools回购中 master的 zip 归档文件:

https://api.github.com/repos/hadley/devtools/zipball/master

(archive_format的另一个选项是 tarball。)

我不知道这个应用程序接口什么时候可用。