如何使用 GitHub API 解析 GitHub Pull 请求对话(评论线程)?

问题描述 投票:0回答:2

我正在研究将存储库从 GitLab 迁移到 GitHub 的流程。
此流程需要做的事情之一是将来自 GitLab 的合并请求重新创建为 GitHub 中的拉取请求,以及它们的对话历史记录。

我设法使用 GitHub API 从原始 MR 创建 PR 和评论,但由于原始 MR 中的一些评论线程已经解决,我想使用 API 将 PR 中的这些对话也标记为已解决,但是我找不到办法做到这一点。现在我只是在对话中添加最后一条评论,表示它已解决,但我想知道是否有更好的方法来做到这一点。

github github-api
2个回答
2
投票

目前仅在 GraphQL 中可用:

https://docs.github.com/en/graphql/reference/mutations#resolvereviewthread

GraphQL 看起来很简单,但事实并非如此。该突变的输入需要一个称为“审核线程”的 id,但 REST API 中没有这样的概念。通过 REST API 的 id 为“评论”,找到相应“评论线程”的唯一方法是检索所有评论线程并通过其中的评论进行过滤。


0
投票

使用 gh 2.21.0(2022 年 12 月),您现在拥有

gh pr lock
,但对于所有对话,而不是个人评论:

gh pr lock --reason resolved

解锁将解锁之前已锁定的对话。否则,什么也做不了。

lock 将锁定之前已解锁的对话。
您可以选择从一组固定原因中指定锁定原因。

  • off_topic
    ”,
  • resolved
    ”,
  • spam
    ”,
  • too_heated

如果问题或拉取请求已被锁定,

gh
将提示您确认是否要“重新锁定”对话,或者如果您忘记或不知道对话已被锁定,则中止“重新锁定”。
重新锁定的主要用途可能是更改锁定原因。


对于个人评论,您首先需要列出 PR 上的所有审核评论,以找到添加解决方案评论的正确位置:

gh api repos/:owner/:repo/pulls/:pull_number/comments

一旦您确定了正确的评论线程,您就可以对其发表评论:

gh api -X POST repos/:owner/:repo/pulls/:pull_number/comments -F body="That conversation was resolved in the original GitLab MR." -F in_reply_to=:comment_id

这不会像

resolveReviewThread
那样“解决”,但至少会在线程中添加评论。

© www.soinside.com 2019 - 2024. All rights reserved.