这里有关于如何创建zip / tarball字符串的良好链接
When I download a zip from github, what is the hex string at the end of the file name represent?
但是我正在看GitHub APIv3,如果我错过了什么,我很好奇。
有没有办法通过API调用获取zip / tarball链接?
如果没有,有没有办法在不使用git二进制文件或库的情况下构建该字符串?意思是,我可以使用各种API调用来提取需要的数据并汇总到我需要的URL吗?
我知道第二个问题对于stackoverflow来说有点不合理,这对我来说是一个有趣的项目,所以我更倾向于第二个问题,如果你只是把我推向正确的方向,而不是放弃代码段。或者只是告诉我是否有可能。
答案 0 :(得分:94)
您可以wget
离开GitHub仓库以获取tar文件(archive):
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
会从用户'rep''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
获取完整档案
它将按照question you mentioned。
由于他们的download service "Nodeload",从GitHub获取档案不需要git二进制文件。
ligemer
建议in an edit以下示例:
编辑2016-08-25 - 使用Wget,Variables和Untar的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.com master
上面的命令会将Github文件夹下载并解压缩到与脚本相同的目录。
Diogo Quintela建议in the comments:
以下示例允许下载,提取和剪切顶级目录
curl -L https://api.github.com/repos/octokit/octokit.rb/tarball | tar xz --strip=1
答案 1 :(得分:23)
语法描述为in the docs:
GET /repos/:owner/:repo/:archive_format/:ref
以下示例网址将(通过302 redirect)指向hadley/devtools回购中master
的zip存档:
https://api.github.com/repos/hadley/devtools/zipball/master
(archive_format
的另一个选项是tarball
。)
我不知道这个API何时可用。