微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以通过安装在原始存储库中的 Github API 克隆/下载拉取请求的分叉私有存储库?

如何解决是否可以通过安装在原始存储库中的 Github API 克隆/下载拉取请求的分叉私有存储库?

我创建了一个 GitHub 应用程序并将其安装到一个私有存储库。
它会检测 Pull Requests 并自动添加评论并为传入的 PR 运行一些测试。

当 PR 来自同一个存储库时它工作正常,
但是当 PR 来自另一个私有 fork 存储库时它不起作用。 (由于我认为是权限问题)

下面的示例代码是我如何克隆代码(压缩文件)GitHub:

String template = "https://api.github.com/repos/%s/%s/zipball/refs/heads/%s";
String path = String.format(template,"USER","REPOSITORY","BRANCH");

HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create(path))
        .header("Authorization","Bearer " + TOKEN)
        .header("Accept","application/vnd.github.v3+json")
        .build();

// returns a redirect link to download the zipped code
HttpResponse<String> response = HttpClient.newHttpClient()
        .send(request,BodyHandlers.ofString());
    • 原始存储库/分叉存储库都是私有的
    • 我的 GitHub 应用程序仅安装在原始存储库上
    • 我的 GitHub 应用程序检测到在原始存储库上打开的拉取请求
    • 我的GitHub App尝试下载Pull Request的源文件
      • 当 Pull Request 的来源来自 Fork 时失败

解决方法

不幸的是,您没有在头部(分叉)存储库上获得任何烫发。

由于 PR 本身属于基础存储库,尽管您确实拥有 pulls API 的权限,因此您可以使用带有媒体类型标头的 this endpoint 获取 PR 的差异或补丁

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。