我们有必要获取私人仓库的拉链球。对于公共的,通过GitHub API或手动( https://github.com/user/repo/zipball/master )非常容易。但私人回购怎么样?即使拥有oAuth令牌也不是很明显。
答案 0 :(得分:32)
新选择
因为给定的已接受的答案不再起作用,我想我会解释如何使用github API中的新更改来实现它。
新下载Api链接
首先,我在此处找到了有关下载存档的信息: https://developer.github.com/v3/repos/contents/#get-archive-link
公众回购
如果它是一个公共回购,那么它很容易......你可以这样做:
curl -L https://api.github.com/repos/pengwynn/octokit/tarball > octokit.tar.gz
私人回购
如果它是私人仓库,您需要创建一个oAuth令牌,方法是转到您的设置,然后选择"开发人员设置" /" Personal access tokens"。 我创建了一个个人令牌。
然后使用下一页上的说明,我发现了如何获得您有权访问的私人仓库: https://developer.github.com/v3/#authentication
完整代码
curl -H "Authorization: token ab499f3b..." \
-L https://api.github.com/repos/godzilla/my_priv_repo/tarball > wut.tar.gz
请务必将ab499f3b...
替换为您的实际令牌。
答案 1 :(得分:2)
修改:这不再有效。
使用CURL:
curl -L -F "login=$USER" -F "token=$TOKEN" https://github.com/$USER/$REPO/$PKGTYPE/$BRANCHorTAG
其中$TOKEN
是github配置文件中的API令牌,而不是用于与APIv3通信的oAuth2令牌。
$USER
是令牌所连接的用户帐户,不一定是repo所属的组织/其他用户。 $USER
的第二个实例是回购的用户/帐户。
$REPO
是私有存储库的名称
$PKGTYPE
是tarball或zipball
$BRANCHorTAG
是一个分支,如master,或者是提交的标记名称。
$USER
的第一个实例必须有权访问属于$USER
第二个实例的repo。
我无法在任何地方找到这个记录,所以如果你想要更详细的话,我也会有一些关于它的文章。
答案 2 :(得分:2)
我遇到了同样的问题,这对我有用(截至2015年2月):
curl -O -J -L -u $YOUROAUTHKEY:x-oauth-basic https://github.com/$USER/$REPO/archive/master.zip
oAuth作为标题解决方案并不适用于我,但有效的方法是将密钥填入用户名并指定类型。然后它给了一个302重定向与正确的链接。
详细命令确实帮我解决了我正在使用的凭据是否被接受(404 vs 401)
答案 3 :(得分:1)
我似乎没有问题从私人回购中获取拉链以供下载。我使用你指定的相同格式,它完美无缺。
我使用OAuth2获取存储库,但我使用您提供的格式为zip球构建链接。 Here is the application我这样做。
如果您想获得OAuth2令牌,只需使用GitHubt API v3格式,这很简单。虽然这不完全符合您的问题:
This是我如何从GitHub获取this chrome extension
的OAuth2令牌<强>更新强>
@jayarjo I build the URL here on line 202。我只是像你指定的那样构建URL,甚至没有使用OAuth2令牌。允许我做的所有令牌都是在创建标记之前获取所有用户的私有数据。但它没有问题......
我认为我实际上能够下载zipball的原因是因为该URL实际上是https://github.com/ *并且因为我目前已登录因为OAuth2我有权访问该网址 - 其中听起来你没有,所以你得到404错误。
您可以尝试向页面发送请求,如果您收到错误响应提示用户先登录,那么当您请求拉链时,您应该没问题。
答案 4 :(得分:1)
cURL 允许 HTTP 标头和请求参数操作。例如:
卷曲-L
-H "授权:令牌 $TOKEN"
https://api.github.com/repos/octocat/Hello-World/zipball --output hello.tar.zip
或
curl -L https://api.github.com/repos/octocat/Hello-World/zipball?access_token=$TOKEN --output hello.tar.zip
答案 5 :(得分:0)
您可以使用基本身份验证或基于令牌的方法。有关详细信息,请参阅https://help.github.com/articles/downloading-files-from-the-command-line。