各プルリクエストに対して、GitHub Enterprise Server は 3 種類のコメント表示を提供しています。プルリクエスト全体に対するプルリクエストのコメント、プルリクエスト内の特定行のコメント、そしてプルリクエスト内の特定のコメントへのコメントです。
Each of these types of comments goes through a different portion of the GitHub Enterprise Server API. このガイドでは、それぞれにアクセスして操作する方法を説明します。 各例では、"octocat" リポジトリで作成した、このサンプルのプルリクエストを使用します。 いつもと同様、サンプルは platform-samples リポジトリにあります。
プルリクエストのコメント
プルリクエストのコメントにアクセスするには、Issues API を経由します。 最初はこれを意外に思うかもしれません。 しかし、プルリクエストがコード付きの Issue に過ぎないことさえ理解すれば、プルリクエストにコメントを作成するため Issues API を使うこともうなずけるでしょう。
ここでは 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
ここでは、コメントを取得するため Issues API を 呼び出し (issue_comments
)、取得したいコメントのリポジトリ名 (octocat/Spoon-Knife
) とプルリクエスト ID (1176
) の両方を指定しています。 その後は、コメントを反復処理して、各コメントの情� �を取得している� けです。
行につけるプルリクエストのコメント
diff ビュー内では、プルリクエスト内の一つの変更について、特定の側面からディスカッションを開始できます。 これらのコメントは、変更されたファイル内の個々の行について書き込まれます。 このディスカッションのエンドポイントURLは、Pull Request Review API から取得されます。
以下のコードは、指定したプルリクエスト番号のファイルにあるプルリクエストのコメントすべてをフェッチします。
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
上の例と非常に似ていることにお気づきでしょう。 このビューとプルリクエストのコメントとの違いは、会話の焦点にあります。 プルリクエストに対するコメントは、コードの全体的な方向性についてのディスカッションやアイデアを扱うべきです。 プルリクエストのレビューの一環として行うコメントは、ファイルで特定の変更が実装された方法について特に扱うべきです。
コミットのコメント
最後のタイプのコメントは、特に個々のコミットで発生します。 For this reason, they make use of the commit comment API.
コミットのコメントを取得するには、コミットの 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 呼び出しは、単一の行コメントと、コミット全体に対するコメントを取得することに注目してく� さい。