GitHub GraphQL API:获取提交标签

问题描述

我不知道是否很难对此问题进行有用的搜索,或者是否没有解决方案,但是我一直在尝试找出如何使用GitHub GraphQL API来获取与给定的提交。

我是GraphQL和GitHub API的新手,所以我只是使用GitHub's explorer来尝试找到执行此操作的机制。

这是我尝试过的内容,其中包含带有哈希bfa0635104bc9a559254b5007646942ff269ae11和消息1.0.0并带有v1.0.0标记的提交。考虑到提交哈希,我正在尝试获取标签

{
  repository(owner: "bscotch",name: "stitch") {
    createdAt
    description
    name
    object(expression: "bfa0635104bc9a559254b5007646942ff269ae11") {
      ... on Commit {
        message
        oid
      }
      ... on Tag {
        tagId: id
        target {
          oid
        }
      }
    }
    ref(qualifiedname: "bfa0635104bc9a559254b5007646942ff269ae11") {
      name
    }
    refs(first: 10,refPrefix: "refs/tags/",orderBy: {field: TAG_COMMIT_DATE,direction: DESC},query: "bfa0635104bc9a559254b5007646942ff269ae11") {
      nodes {
        name
      }
    }
  }
}

以上内容输出仅返回... on Commit内容的数据。其他所有东西都不存在:

{
  "data": {
    "repository": {
      "createdAt": "2020-09-18T18:47:33Z","description": "A Gamemaker Studio 2 Pipeline Development Kit. A CLI and Node.JS API for creating GMS2 asset pipelines.","name": "stitch","object": {
        "message": "1.0.0","oid": "bfa0635104bc9a559254b5007646942ff269ae11"
      },"ref": null,"refs": {
        "nodes": []
      }
    }
  }
}

是否可以通过API执行此操作?我最好的猜测是,是否存在,是通过refs字段。

解决方法

我也一直在挣扎,这不是最好的答案,但至少它至少有效。

查询 import openpyxl from openpyxl.styles import Protection,NamedStyle work_book = openpyxl.load_workbook(r"xxxx") #Workbook work_sheet = work_book['Sheet1'] #worksheet of interest work_sheet.protection.sheet = True #Protect the sheet work_sheet.protection.password = 'xxxx' #Protection password 以获取所有标签,然后以您用于匹配 OID 的任何语言手动过滤。您不能保证在一次调用中获取所有标签,因此您肯定在其中包含 OID,但我试图与可能是最近的标签进行匹配,因此它运行良好。

refs/tags/

这给了我一个巨大的清单,但在其中,我有

{
  repository(name: "dg",owner: "dgattey") {
    refs(refPrefix: "refs/tags/",last: 100) {
      nodes {
        name
        target {
          oid
        }
      }
    }
  }
}

我可以使用其他代码根据我正在搜索的 OID 检查“85fe69df20062aafeea7593c45c1785f44208252”。不理想!