跳至主要内容

使用评论

使用 REST API,您可以访问并管理拉取请求、议题或提交中的评论。

对于任何拉取请求,GitHub 提供三种评论视图:对整个拉取请求的评论对拉取请求中特定行的评论,以及对拉取请求中特定提交的评论

这些不同类型的评论会走 GitHub API 的不同部分。在本指南中,我们将探讨如何访问和操作每一种评论。对于每个示例,我们都会使用此示例拉取请求(位于 “octocat” 仓库)。和往常一样,示例代码可以在我们的 platform-samples 仓库中找到。

拉取请求评论

要访问拉取请求的评论,您需要使用管理议题的端点。乍一看这可能有点反直觉,但一旦了解拉取请求本质上只是带有代码的议题,使用这些端点来创建拉取请求的评论就很合理了。

下面我们将演示如何使用Octokit.rb创建 Ruby 脚本来获取拉取请求的评论。同时,您还需要创建一个个人访问令牌

下面的代码可帮助您使用 Octokit.rb 入门,从拉取请求中获取评论。

require 'octokit'

# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!!
# Instead, set and test environment variables, like below
client = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN']

client.issue_comments("octocat/Spoon-Knife", 1176).each do |comment|
  username = comment[:user][:login]
  post_date = comment[:created_at]
  content = comment[:body]

  puts "#{username} made a comment on #{post_date}. It says:\n'#{content}'\n"
end

这里,我们专门调用 API 获取评论(issue_comments),提供仓库名称(octocat/Spoon-Knife)以及我们感兴趣的拉取请求 ID(1176)。随后,只需遍历这些评论,即可获取每条评论的相关信息。

特定行的拉取请求评论

在 diff 视图中,您可以针对拉取请求中单个更改的特定方面发起讨论。这类评论出现在已更改文件的单独行上。对应的端点 URL 来自管理拉取请求审查的端点

下面的代码会获取给定单个拉取请求编号下,文件中所有的拉取请求评论。

require 'octokit'

# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!!
# Instead, set and test environment variables, like below
client = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN']

client.pull_request_comments("octocat/Spoon-Knife", 1176).each do |comment|
  username = comment[:user][:login]
  post_date = comment[:created_at]
  content = comment[:body]
  path = comment[:path]
  position = comment[:position]

  puts "#{username} made a comment on #{post_date} for the file called #{path}, on line #{position}. It says:\n'#{content}'\n"
end

您会注意到这与上面的示例几乎相同。区别在于两种视图的对话焦点不同。对拉取请求的评论应当用于讨论代码的整体方向或提供想法;而作为拉取请求审查一部分的评论则应专注于文件中某一特定更改的实现方式。

提交评论

最后一种评论专门针对单个提交。因此,它们使用管理提交评论的端点

要检索提交的评论,您需要使用该提交的 SHA1。换句话说,您不会使用任何与拉取请求相关的标识符。下面是一个示例。

require 'octokit'

# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!!
# Instead, set and test environment variables, like below
client = Octokit::Client.new :access_token => ENV['MY_PERSONAL_TOKEN']

client.commit_comments("octocat/Spoon-Knife", "cbc28e7c8caee26febc8c013b0adfb97a4edd96e").each do |comment|
  username = comment[:user][:login]
  post_date = comment[:created_at]
  content = comment[:body]

  puts "#{username} made a comment on #{post_date}. It says:\n'#{content}'\n"
end

请注意,此 API 调用既会检索单行评论,也会检索针对整个提交的评论。

© . This site is unofficial and not affiliated with GitHub, Inc.