有没有办法通过编程获取一个私有github仓库的zipball?

fiei3ece  于 2023-08-01  发布在  Git
关注(0)|答案(7)|浏览(150)

我们得去找一个私人回购公司。对于公共网站,通过GitHub API或手动操作都很容易(https://github.com/user/repo/zipball/master)。但是私人回购呢?即使有oAuth令牌,也不太明显怎么做。

a2mppw5e

a2mppw5e1#

新选择

因为给定的接受答案不再起作用,我想我应该解释一下我是如何通过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令牌,方法是转到你的设置,然后选择“Developer settings”/“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...替换为您的实际令牌。

elcex8rz

elcex8rz2#

cURL允许HTTP头和请求参数操作。举例来说:
curl -L
-H”授权:令牌$TOKEN”
https://api.github.com/repos/octocat/Hello-World/zipball--输出hello.tar.zip

curl -L https://api.github.com/repos/octocat/Hello-World/zipball?access_token=$TOKEN--输出hello.tar.zip

vvppvyoh

vvppvyoh3#

**编辑:**此功能不再有效。

关于CURL:

curl -L -F "login=$USER" -F "token=$TOKEN" https://github.com/$USER/$REPO/$PKGTYPE/$BRANCHorTAG

字符串
其中$TOKEN是您的github配置文件上的API令牌,而不是用于与APIv 3通信的oAuth2令牌。
$USER是与令牌连接的用户帐户,不一定是存储库所属的组织/其他用户。$USER的第二个示例是存储库的用户/帐户。
$REPO是私有存储库的名称
$PKGTYPE是tarball或zipball,$BRANCHorTAG是一个分支,比如master,或者是一个提交的标记名。
$USER的第一个示例必须能够访问属于$USER的第二个示例的存储库。
我在任何地方都找不到这个文件,所以如果你想要更详细的东西,我也有一点关于它的文章。

ymdaylpp

ymdaylpp4#

我遇到了同样的问题,这对我很有效(截至2015年2月):

curl -O -J -L -u $YOUROAUTHKEY:x-oauth-basic https://github.com/$USER/$REPO/archive/master.zip

字符串
oAuth作为头解决方案对我不起作用,但起作用的是将密钥填充到用户名中并指定类型。然后它给出了一个302重定向到正确的链接。
Verbose命令确实帮助我解决了我使用的凭据是否被接受的问题(404vs 401)

n53p2ov0

n53p2ov05#

我似乎没有问题得到一个zipball从私人repos下载。我使用您指定的相同格式,它工作得很好。
我使用OAuth2来获取存储库,但我使用您给出的格式为zip ball构建链接。Here is the application我在里面做这个。
如果你想获得一个OAuth2令牌,只需使用GitHubt API v3,这很简单。虽然这并不完全符合您的问题:
This是我从GitHub为this chrome extension获取OAuth2令牌的方式

更新

@jayarjo我在第202行构建了URL。我只是像你指定的那样构建URL,OAuth2令牌甚至没有用于它。我的令牌允许我做的就是在创建标记之前获取所有用户的私有数据。但它的工作没有问题...
我认为我实际上能够下载zipball的原因是因为URL实际上是https://github.com/ *,并且因为我目前登录了OAuth2,所以我有权访问该URL -听起来你没有,所以你得到了404错误。
你可以尝试向页面发送一个请求,如果你得到一个错误响应,提示用户首先登录,那么当你请求zipball时,你应该没有问题。

piok6c0g

piok6c0g6#

除了api.github.com,您可以直接从github.com下载tarball/zipball:
(对于公共存储库,可以省略令牌头-H "Authorization: token $(yourToken)"
curl -H "Authorization: token $(yourToken)" -o code.tar.gz -L https://github.com/$(username)/$(reponame)/tarball/$(branchName/TagName/hashValue)
curl -H "Authorization: token $(yourToken)" -o code.tar.gz -L https://github.com/$(username)/$(reponame)/archive/$(branchName/TagName/hashValue).tar.gz
还是玩zipball
curl -H "Authorization: token $(yourToken)" -o code.zip -L https://github.com/$(username)/$(reponame)/zipball/$(branchName/TagName/hashValue)
curl -H "Authorization: token $(yourToken)" -o code.zip -L https://github.com/$(username)/$(reponame)/archive/$(branchName/TagName/hashValue).zip
您可以根据此答案https://stackoverflow.com/a/23796159生成令牌

bkhjykvo

bkhjykvo7#

您可以使用基本身份验证或基于令牌的方法。更多详细信息请参见https://help.github.com/articles/downloading-files-from-the-command-line

相关问题