go x/build/maintner: GitHubIssue.ClosedBy field is never populated

p1tboqfb  于 2个月前  发布在  Go
关注(0)|答案(4)|浏览(28)

存在一个 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 [...]"
  },

可能的解决方案

我看到了两个可能的解决方案:

  1. 填充该字段。
  2. 删除该字段(或将其标记为损坏并指向此问题)。
    由于此字段未包含在 maintner 查询的现有端点中,因此需要为每个问题进行额外的API调用。这可能是非常昂贵的,而且根本不可行。
    我建议删除它或至少将其记录下来,作为中间步骤。但愿意听取大家的意见。cc @bradfitz
eufgjt7s

eufgjt7s1#

让我们先用一个待办事项记录这个问题。
首先需要它的人可以实现。
无论如何,我们已经同步了问题事件,所以数据在语料库中。我们只需要跟踪每个问题的最早关闭事件。

a2mppw5e

a2mppw5e2#

https://golang.org/cl/149238提到了这个问题:maintner: document that GitHubIssue.ClosedBy field is not implemented

bq3bfh9z

bq3bfh9z3#

我们无论如何都已经同步了问题事件,所以数据在语料库中。我们只需要跟踪每个问题的最早关闭事件。
这是一个很好的考虑,那么就不需要额外的查询了。关闭事件有额外的信息,比如关闭问题的提交的SHA(如果有的话):GitHubIssueEvent.CommitID。这也可以是有用的信息来暴露。

rqqzpn5f

rqqzpn5f4#

你好。在这里,我注意到任何修复这个问题都取决于这个问题是否得到解决:#29396
原因如下:
我们需要跟踪每个问题的最早关闭事件。
在某些情况下,似乎没有记录下来。我仍在努力找出其中的原因。问题可能出在事件记录的某个环节。

相关问题