这里有一个关于如何创建 zip/tarball 字符串的很好的链接
当我从github下载zip时,文件名末尾的十六进制字符串代表什么?
但是我正在查看 GitHub APIv3,我很好奇我是否遗漏了某些内容。
有没有办法通过 API 调用获取 zip/tarball 链接?
如果没有,有没有办法可以在不使用 git 二进制文件或库的情况下构建该字符串?意思是,我可以使用各种 API 调用来提取所需的数据并组装到我需要的 URL 吗?
我知道第二个问题对于 stackoverflow 来说有点不合理,这对我来说是一个有趣的项目,所以我更喜欢第二个问题,如果你只是把我推向正确的方向,而不是扔掉代码片段。或者只是告诉我是否可能。
您可以
wget
从 GitHub 存储库获取 tar 文件(存档):
wget 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”中获取名为“master”的文件。
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
获取完整的存档。它将按照您提到的问题中描述的命名约定创建一个目录。
无需 Git 二进制文件即可从 GitHub 获取存档,这要归功于他们的 下载服务“Nodeload”。
ligemer
建议在编辑中以下示例:
编辑 2016-08-25 - 使用 Wget、变量和解压的 Shell 示例:
#!/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
。)我不知道这个API什么时候可用。