【问题标题】:Using curl, how do I download a .diff file from a private repository on github使用 curl,如何从 github 上的私有存储库下载 .diff 文件
【发布时间】:2016-05-30 00:28:39
【问题描述】:

我在 github 上有一个私人仓库,属于一个组织。对于给定的拉取请求,有一个指向 diff 文件的 url,如下所示:

https://github.com/<ORG>/<REPO>/pull/<PR_NUMBER>.diff

但是 repo 是私有的,那么如何使用 curl 下载这个文件?我生成了一个“个人访问令牌”,但不知道如何使用它。

我试过了:

curl -H 'Authorization: token <TOKEN>' -H 'Accept: application/vnd.github.v3.raw' -O -L "https://github.com/<ORG>/<REPO>/pull/<PR_NUMBER>.diff"

但所有发回的都是“未找到”。

【问题讨论】:

    标签: curl github


    【解决方案1】:

    您可以使用来自 api.github.com 的拉取请求 URL 和不同的接受内容类型。例如

    curl -H 'Authorization: token mytoken' -H "Accept: application/vnd.github.v3.diff" https://api.github.com/repos/orgname/repo/pulls/1234
    

    注意:请去掉网址中的“.diff”后缀。

    【讨论】:

    • 工作出色!
    【解决方案2】:

    Github API 为所有未经授权的请求返回 404——主要是为了隐藏请求 URL 处用户/组织数据的存在/不存在。因此,您返回的 404可能实际上是 401。

    当通过 curl 向 GH api 发送请求时,您应该使用 u 选项发送令牌而不是 Authorization 标头,从而产生以下请求:

    curl -u <USERNAME>:<TOKEN> \ -H 'Accept: application/vnd.github.v3.raw' -O -L \ "https://github.com/<ORG>/<REPO>/pull/<PR_NUMBER>.diff"

    【讨论】:

    • 我仍然使用 un/pw 或 un/token 组合得到 Not Found。
    • @polytopia 你找到解决方案了吗?即使发送正确的身份验证标头,我也总是收到 404
    • 我在这两种情况下都得到了重定向
    猜你喜欢
    • 2018-01-30
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 2017-02-03
    • 2013-08-10
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多