GitHub Api下载zip或tarball链接

时间:2011-12-04 17:18:56

标签: git github github-api

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

When I download a zip from github, what is the hex string at the end of the file name represent?

但是我正在看GitHub APIv3,如果我错过了什么,我很好奇。

  1. 有没有办法通过API调用获取zip / tarball链接?

  2. 如果没有,有没有办法在不使用git二进制文件或库的情况下构建该字符串?意思是,我可以使用各种AP​​I调用来提取需要的数据并汇总到我需要的URL吗?

  3. 我知道第二个问题对于stackoverflow来说有点不合理,这对我来说是一个有趣的项目,所以我更倾向于第二个问题,如果你只是把我推向正确的方向,而不是放弃代码段。或者只是告诉我是否有可能。

2 个答案:

答案 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'的文件。

updated V3 API url是:

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何时可用。