存在一个 GitHubIssue.ClosedBy
字段在 maintner
中:
type GitHubIssue struct {
...
ClosedBy *GitHubUser
...
}
你期望看到什么?
准确的值。
你看到了什么?
该字段从未填充,并且对于所有GitHub问题都等于 nil
。
这可能会误导任何想要使用这些信息的人。
原因
closed_by
JSON字段在 https://developer.github.com/v3/issues/#get-a-single-issue 的示例响应中有记录和显示。
然而,maintner
使用 https://developer.github.com/v3/issues/#list-issues-for-a-repository 端点一次获取许多问题的信息:
https://github.com/golang/build/blob/23803abc1638efbf100d69fe6d901b14a9ad55fd/maintner/github.go#L1605-L1613
但是,当列出许多问题而不是获取单个问题时,GitHub不会包含所有详细字段。实际上,closed_by
字段确实缺失了:
从 Get Single Issue Endpoint 的响应
...
"comments": 1,
"created_at": "2018-11-09T00:20:31Z",
"updated_at": "2018-11-09T00:25:34Z",
"closed_at": "2018-11-09T00:22:12Z",
"author_association": "MEMBER",
"body": "It exists in [...]",
"closed_by": {
"login": "gopherbot",
...
}
}
从 List Issues Endpoint 的响应
...
"comments": 1,
"created_at": "2018-11-09T00:20:31Z",
"updated_at": "2018-11-09T00:25:34Z",
"closed_at": "2018-11-09T00:22:12Z",
"author_association": "MEMBER",
"body": "It exists in [...]"
},
可能的解决方案
我看到了两个可能的解决方案:
- 填充该字段。
- 删除该字段(或将其标记为损坏并指向此问题)。
由于此字段未包含在maintner
查询的现有端点中,因此需要为每个问题进行额外的API调用。这可能是非常昂贵的,而且根本不可行。
我建议删除它或至少将其记录下来,作为中间步骤。但愿意听取大家的意见。cc @bradfitz
4条答案
按热度按时间eufgjt7s1#
让我们先用一个待办事项记录这个问题。
首先需要它的人可以实现。
无论如何,我们已经同步了问题事件,所以数据在语料库中。我们只需要跟踪每个问题的最早关闭事件。
a2mppw5e2#
https://golang.org/cl/149238提到了这个问题:
maintner: document that GitHubIssue.ClosedBy field is not implemented
bq3bfh9z3#
我们无论如何都已经同步了问题事件,所以数据在语料库中。我们只需要跟踪每个问题的最早关闭事件。
这是一个很好的考虑,那么就不需要额外的查询了。关闭事件有额外的信息,比如关闭问题的提交的SHA(如果有的话):
GitHubIssueEvent.CommitID
。这也可以是有用的信息来暴露。rqqzpn5f4#
你好。在这里,我注意到任何修复这个问题都取决于这个问题是否得到解决:#29396。
原因如下:
我们需要跟踪每个问题的最早关闭事件。
在某些情况下,似乎没有记录下来。我仍在努力找出其中的原因。问题可能出在事件记录的某个环节。