问题描述
我不知道是否很难对此问题进行有用的搜索,或者是否没有解决方案,但是我一直在尝试找出如何使用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”。不理想!