github - GitHub GraphQL API:获取提交的标签
问题描述
我不知道是否很难对这个问题进行有用的搜索,或者是否没有解决方案,但我一直在尝试弄清楚如何使用 GitHub GraphQL API 来获取与给定提交关联的所有标签。
我是 GraphQL 和 GitHub API 的新手,所以我只是使用GitHub 的资源管理器来尝试找到执行此操作的机制。
这是我尝试过的,其中有一个带有 hashbfa0635104bc9a559254b5007646942ff269ae11
和 message的提交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
现场。
解决方案
我也一直在苦苦挣扎,这不是最好的答案,但至少它至少有效。
查询refs/tags/
以获取所有标签,然后以您用于匹配 OID 的任何语言手动过滤。您不能保证在一次调用中获取所有标签,因此您肯定会在其中包含 OID,但我试图匹配可能是最近的标签,所以它工作正常。
{
repository(name: "dg", owner: "dgattey") {
refs(refPrefix: "refs/tags/", last: 100) {
nodes {
name
target {
oid
}
}
}
}
}
这给了我一个巨大的清单,但在其中,我有
{
"node": {
"name": "v2.0.1",
"target": {
"oid": "85fe69df20062aafeea7593c45c1785f44208252"
}
}
}
我可以使用其他代码对照我正在搜索的 OID 检查“85fe69df20062aafeea7593c45c1785f44208252”。不理想!
推荐阅读
- tensorflow - 将 Yolov4 Tiny 转换为 tflite。错误:无法将大小为 372388 的数组重塑为形状 (256,256,3,3)
- javascript - 如何更新类组件中的状态?
- html - 如何自动填充几个pdf?
- javascript - webapp跳转到chrome浏览器,是否有cookie共享?
- pandas - pandas groupby 标志记录并应用回原始数据帧
- java - 如何将python类转换为Java对象
- java - 如何从wildfly登录中排除io.undertow.request包
- java - OptaPlanner,为什么调试时没有打断点的例子
- python - python 3d列表分配和索引不同的结果
- node.js - Nodejs Mongoose 'Operation `XXX.find()` 缓冲在 10000 毫秒后超时'