3

我正在尝试以编程方式下载已签出到特定分支的存储库的 zip 文件。为此,我需要通过github graphQL API获取我指定的分支头部的 zipballUrl 。

此答案指定如何获取默认分支的 zipballUrl,但我无法将其更改为我的要求。感谢有人可以提供帮助。

PS:运行 git clone 命令并签出到分支不是一个选项,因为我使用的编程语言(芭蕾舞女演员)还不支持 shell 命令。

4

1 回答 1

2

您可以使用存储库对象的引用字段。

例如,考虑同一个 google gson 项目

{
  repository(owner: "google", name: "gson") {

    ref(qualifiedName: "722"){
      target {
        ... on Commit {
          tarballUrl
          zipballUrl
        }
      }
    }
  }
}

在这个查询中 ref(qualifiedName) 基本上会查找具有指定值的引用或分支名称,并返回分支的 tar 内容。

回复

{
  "data": {
    "repository": {
      "ref": {
        "target": {
          "tarballUrl": "https://codeload.github.com/google/gson/legacy.tar.gz/2725be440147a71030ece93683b4424e849c59ed",
          "zipballUrl": "https://codeload.github.com/google/gson/legacy.zip/2725be440147a71030ece93683b4424e849c59ed"
        }
      }
    }
  }
}

您可以验证分支引用“722”的 sha https://github.com/google/gson/commit/2725be440147a71030ece93683b4424e849c59ed

于 2019-08-21T21:11:09.413 回答